General Plumbing

Brisbane plumber for taps, toilets and burst pipes

Dripping tap driving you up the wall? Toilet running at all hours? Pipe burst right before the in-laws arrive? We handle day-to-day plumbing across Brisbane with honest quotes, licensed workmanship and a tidy finish.

event
A job done right
build

Diagnose Before We Quote

We inspect the full picture before we quote, so you pay for the fix, not the guess. No surprises halfway through.

app_registration

track my
plumber app

We inspect the full picture before we quote, so you pay for the fix, not the guess. No surprises halfway through.

shield

Honest Advice, Always

Billy’s walked away from $5K jobs rather than recommend work you don’t need. We’d rather earn the next call than oversell this one.

General Plumbing

From Dripping Taps to Burst Pipes, Sorted Properly

Everyday plumbing is where small faults quietly turn into big bills. Our licensed team handles the full range of household plumbing across Brisbane, diagnosing the real cause before we quote so the fix actually lasts.

  • Tap, mixer and washer repairs and replacements, done with quality parts that stop the drip for good.
  • Toilet and cistern repairs, from running toilets and phantom flushes to full pan replacements.
  • Burst and leaking pipes plus general maintenance, isolated fast and repaired to code.
north_east
north_east
This is some text inside of a div block.
How We Work

How We Get It Right the First Time

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

01

Call or book
Online

Ring Natalie on (07) 3523 1888 or book through ServiceM8. We’ll lock in a time that actually works for you.

01

Call or book
Online

Ring Natalie on (07) 3523 1888 or book through ServiceM8. We’ll lock in a time that actually works for you.

01

Call or book
Online

Ring Natalie on (07) 3523 1888 or book through ServiceM8. We’ll lock in a time that actually works for you.

01

Call or book
Online

Ring Natalie on (07) 3523 1888 or book through ServiceM8. We’ll lock in a time that actually works for you.

Real Words. Real Neighbours.

Hear From Our Happy Brisbane Homeowners

4.9
star
star
star
star
star

on Google 668 reviews

star
star
star
star
star
After our hot water system failed overnight, we called Billy at 8:00 AM on Saturday. By midday, he had a brand-new system completely installed! The team was super friendly, efficient, and did an amazing job. Highly recommend their services.
Glenn Wiseman
star
star
star
star
star
Great service, friendly and timely in all communication. Really appreciate the professionalism
Michelle Kretschmer
star
star
star
star
star
The team are amazing , they came the same day and helped me with a blocked toilet. The booking was easy and communication was really good. Thanks Guys !
Pedzi
star
star
star
star
star
Responded quickly and provided helpful and thorough service. Highly recommended!
Karla Kramer
star
star
star
star
star
They are the best in gas connection work. We did outdoor kitchen setup recently. For that we needed gas connection and these guys finish the work for us in committed time.
Santhosh Kumar Hirekerur
star
star
star
star
star
Quick and easy with great price transparency
Emily Bambrick
star
star
star
star
star
Billy was so professional and I felt very comfortable having him working in my home
Janine Mellor
star
star
star
star
star
We had a friendly service from Billy. He did a great job, would highly recommend.
Joanna Horn
star
star
star
star
star
Excellent service - from Michelle on the phone to Billy the plumber who came out that same afternoon. Everything was sorted quickly and explained clearly. Appreciate the great work - will definitely use these guys again!
Claire Monsour
star
star
star
star
star
Great family business. Show up on time and do what they say they will do. Replaced our shower heads and put in a water filter.
Alison Maher
Fixed-Price Packages

Know What You Are Paying Before We Start

Three fixed-price checks for the things Brisbane homes worry about most. One price, agreed up front, with honest advice at the end of it and no obligation to go further.

Hot Water Peace of Mind Check
$99
Know where you stand before your hot water leaves you cold.
  • Health check of your system
  • Leak and corrosion inspection
  • Age and lifespan assesment
  • Honest advice on repair vs replacement
  • Options and pricing if needed
north_east
Gas Cooktop Tune-Up
$169
Because dinner should not come with surprises.
  • Safety inspection
  • Burner clean
  • Flame performance test
  • Ignition check
  • Honest advice and recommendations
north_east
Whole Home Plumbing Health Check
$349
Like a health check for your home's plumbing.
  • Water pressure testing
  • Leak inspection
  • Fixture testing
  • Pipework assessment
  • Written report
  • Repair recommendations
north_east
Where We Work

Serving Brisbane From Our Morningside Base

We operate within a 12km radius of our Morningside office, right across Brisbane. Primary suburbs include Morningside, Bulimba, Balmoral, Hawthorne, Cannon Hill, Seven Hills, Norman Park, Camp Hill and Coorparoo, plus Ascot, Hamilton, New Farm, Paddington, Red Hill, Wynnum, Manly and more.

north_east
location_on
Morningside
location_on
Bulimba
location_on
Hawthorne
location_on
Cannon Hill
location_on
Camp Hill
location_on
Coorparoo
location_on
Balmoral
location_on
Norman Park
location_on
Seven Hills
FAQs

Common plumbing questions

Straight answers to the plumbing questions Brisbane homeowners ask us most.

north_east

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

Ready to Skip the Plumbing Stress?

Pick up the phone or book online and let’s sort it properly. We’ll diagnose before we quote, fix it the first time, and leave the place cleaner than we found it. And every job comes with an extra Plus, on us. That’s the Plus.

event
/* ========================================= Lumos GSAP Starter Interactions Version: v1.1 ========================================= */ document.addEventListener("DOMContentLoaded", () => { /* ========================================= Validación inicial de GSAP ========================================= */ if (typeof gsap === "undefined") return; gsap.registerPlugin(ScrollTrigger); const prefersReducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches; if (prefersReducedMotion) return; /* ========================================= Animaciones de counters, cards e íconos ========================================= */ function initCounters() { /* Elementos */ const cards = document.querySelectorAll(".counter_card"); const counters = document.querySelectorAll(".counter_digit"); const icons = document.querySelectorAll(".counter_icon"); if (!cards.length && !counters.length && !icons.length) return; /* ----------------------------------------- Animación de entrada de las cards ----------------------------------------- */ if (cards.length) { gsap.fromTo(cards, { y: 32, opacity: 0, scale: 0.96, filter: "blur(8px)" }, { y: 0, opacity: 1, scale: 1, filter: "blur(0px)", duration: 0.75, ease: "power3.out", stagger: 0.12, scrollTrigger: { trigger: cards[0], start: "top 85%", once: true } } ); } /* ----------------------------------------- Animación numérica de los counters ----------------------------------------- */ counters.forEach((counter) => { const originalValue = counter.textContent.trim(); // Normaliza el número para aceptar separadores de miles const numericValue = originalValue.replace(/,/g, ""); const endValue = parseFloat(numericValue); if (isNaN(endValue)) return; const before = counter.dataset.before || ""; const after = counter.dataset.after || ""; const duration = parseFloat(counter.dataset.duration) || 2.2; const delay = parseFloat(counter.dataset.delay) || 0.2; // Detecta los decimales desde el valor numérico real. // Opcionalmente se pueden definir manualmente con data-decimals. const decimals = counter.dataset.decimals !== undefined ? Math.max(0, parseInt(counter.dataset.decimals, 10) || 0) : (String(endValue).split(".")[1] || "").length; // Mantiene separadores de miles y decimales const formatter = new Intl.NumberFormat("en-US", { minimumFractionDigits: decimals, maximumFractionDigits: decimals }); let obj = { value: 0 }; gsap.to(obj, { value: endValue, duration, delay, ease: "power4.out", scrollTrigger: { trigger: counter, start: "top 85%", once: true }, // Actualiza el texto mientras avanza la animación onUpdate: () => { counter.textContent = before + formatter.format(obj.value) + after; }, // Ajusta el valor final y agrega un pequeño rebote onComplete: () => { counter.textContent = before + formatter.format(endValue) + after; gsap.fromTo(counter, { scale: 1 }, { scale: 1.08, duration: 0.18, yoyo: true, repeat: 1, ease: "power2.out" } ); } }); }); /* ----------------------------------------- Animación de íconos ----------------------------------------- */ icons.forEach((icon, index) => { const iconInner = icon.querySelector(".material_icon") || icon; const tl = gsap.timeline({ scrollTrigger: { trigger: icon, start: "top 85%", once: true }, delay: 0.35 + index * 0.12 }); tl.fromTo(iconInner, { scale: 0, rotate: -20, opacity: 0, filter: "blur(8px)" }, { scale: 1.18, rotate: 0, opacity: 1, filter: "blur(0px)", duration: 0.55, ease: "back.out(2.4)" } ) .to(iconInner, { scale: 1, duration: 0.25, ease: "power2.out" }) .to(iconInner, { y: -4, duration: 1.8, repeat: -1, yoyo: true, ease: "sine.inOut" }); }); } /* ========================================= Inicialización general ========================================= */ initCounters(); initAutoTabs(); initHeadingReveal(); });