Professional Dog Grooming in London

Keep your furry friend looking and feeling their best with our expert grooming services. Professional care, loving hands, and outstanding results.

🐕

Our Services

Comprehensive grooming services to keep your dog healthy and happy

✂️

Full Grooming

Complete grooming service including wash, cut, nail trimming, and ear cleaning. Perfect for maintaining your dog's appearance and health.

From £45
🛁

Bath & Blow Dry

Refreshing bath with premium shampoos, conditioning treatment, and professional blow dry. Your dog will smell and feel amazing!

From £25
💅

Nail Trimming

Professional nail trimming and grinding service. Quick, safe, and stress-free for your pet. Essential for paw health and comfort.

From £10
👂

Ear Cleaning

Gentle ear cleaning and inspection. Prevents ear infections and keeps your dog's ears healthy and clean.

From £8
🦷

Teeth Cleaning

Professional dental hygiene service to keep your dog's teeth clean and breath fresh. Important for overall health.

From £15
🐕‍🦺

Puppy Introduction

Gentle introduction to grooming for puppies. Short, positive sessions to build confidence and create a stress-free experience.

From £20

About Pawfect Groomers

With over 10 years of experience serving London pet owners, we understand that your dog is more than just a pet – they're family. Our certified groomers are passionate about providing the highest quality care in a stress-free environment.

🏆

Certified Professionals

All our groomers are certified and continuously trained in the latest techniques.

🏥

Health Focused

We prioritize your dog's health and comfort throughout every grooming session.

❤️

Gentle Care

Patient, loving approach that reduces stress for both you and your pet.

🏠

Contact Us

Ready to book your dog's grooming session? Get in touch today!

📍

Location

123 King's Road
Chelsea, London SW3 4RP

📞
🕒

Opening Hours

Monday - Friday: 9:00 AM - 6:00 PM
Saturday: 9:00 AM - 5:00 PM
Sunday: 10:00 AM - 4:00 PM

Book an Appointment

=== assets/js/script.js === // Mobile navigation toggle document.addEventListener('DOMContentLoaded', function() { const hamburger = document.querySelector('.hamburger'); const navMenu = document.querySelector('.nav-menu'); hamburger.addEventListener('click', function() { hamburger.classList.toggle('active'); navMenu.classList.toggle('active'); }); // Close mobile menu when clicking on a link document.querySelectorAll('.nav-menu a').forEach(link => { link.addEventListener('click', () => { hamburger.classList.remove('active'); navMenu.classList.remove('active'); }); }); // Close mobile menu when clicking outside document.addEventListener('click', function(e) { if (!hamburger.contains(e.target) && !navMenu.contains(e.target)) { hamburger.classList.remove('active'); navMenu.classList.remove('active'); } }); }); // Smooth scrolling for navigation links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function (e) { e.preventDefault(); const target = document.querySelector(this.getAttribute('href')); if (target) { target.scrollIntoView({ behavior: 'smooth', block: 'start' }); } }); }); // Contact form handling document.getElementById('contactForm').addEventListener('submit', function(e) { e.preventDefault(); // Get form data const formData = new FormData(this); const data = Object.fromEntries(formData); // Simple form validation if (!data.name || !data.email || !data.phone || !data.service) { alert('Please fill in all required fields.'); return; } // Email validation const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(data.email)) { alert('Please enter a valid email address.'); return; } // Simulate form submission const button = this.querySelector('button[type="submit"]'); const originalText = button.textContent; button.textContent = 'Sending...'; button.disabled = true; // Simulate API call delay setTimeout(() => { alert('Thank you for your message! We will contact you soon to confirm your appointment.'); this.reset(); button.textContent = originalText; button.disabled = false; }, 1500); }); // Add scroll effect to header window.addEventListener('scroll', function() { const header = document.querySelector('.header'); if (window.scrollY > 100) { header.style.background = 'rgba(255, 255, 255, 0.98)'; header.style.boxShadow = '0 2px 20px rgba(0, 0, 0, 0.15)'; } else { header.style.background = 'rgba(255, 255, 255, 0.95)'; header.style.boxShadow = '0 2px 20px rgba(0, 0, 0, 0.1)'; } }); // Intersection Observer for animations const observerOptions = { threshold: 0.1, rootMargin: '0px 0px -50px 0px' }; const observer = new IntersectionObserver(function(entries) { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.style.opacity = '1'; entry.target.style.transform = 'translateY(0)'; } }); }, observerOptions); // Observe service cards and contact items for animations document.addEventListener('DOMContentLoaded', function() { const animatedElements = document.querySelectorAll('.service-card, .contact-item, .feature'); animatedElements.forEach(el => { el.style.opacity = '0'; el.style.transform = 'translateY(30px)'; el.style.transition = 'opacity 0.6s ease, transform 0.6s ease'; observer.observe(el); }); }); // Add loading animation to page window.addEventListener('load', function() { document.body.style.opacity = '0'; document.body.style.transition = 'opacity 0.3s ease'; setTimeout(() => { document.body.style.opacity = '1'; }, 100); });