:root{ --ink:#121212; --panel:#1b1b1b; --panel-2:#212121; --line:#2c2c2c; --yellow:#FFD400; --yellow-deep:#E6BE00; --text:#F4F2EC; --muted:#ADA89C; --radius:10px; --wrap:1080px; } *{margin:0;padding:0;box-sizing:border-box} html{scroll-behavior:smooth} @media (prefers-reduced-motion:reduce){ html{scroll-behavior:auto} *,*::before,*::after{transition:none !important;animation:none !important} } body{ background:var(--ink); color:var(--text); font-family:'DM Sans',system-ui,-apple-system,'Segoe UI',sans-serif; font-size:17px; line-height:1.65; -webkit-font-smoothing:antialiased; padding-bottom:76px; } h1,h2,h3,.btn,.logo,.price-val{ font-family:'Bebas Neue','Arial Narrow',sans-serif; font-weight:400; letter-spacing:.03em; line-height:1.05; } h1{font-size:clamp(2.6rem,7vw,4.4rem)} h2{font-size:clamp(1.9rem,4.5vw,2.7rem); margin-bottom:.35em} h3{font-size:1.45rem; letter-spacing:.04em} p{margin-bottom:1em} a{color:var(--yellow)} a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{ outline:3px solid var(--yellow); outline-offset:2px; } img{max-width:100%;height:auto;display:block} .wrap{max-width:var(--wrap); margin:0 auto; padding:0 20px} .section{padding:56px 0} .section--alt{background:var(--panel)} .eyebrow{ display:inline-block; color:var(--yellow); font-size:.8rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase; margin-bottom:12px; } .muted{color:var(--muted)} .keyline{margin:6px 0 26px} .keyline svg{display:block}/* buttons */ .btn{ display:inline-block; text-decoration:none; text-align:center; font-size:1.35rem; letter-spacing:.05em; padding:14px 26px; border-radius:var(--radius); border:2px solid var(--yellow); transition:transform .12s ease, background .12s ease, color .12s ease; cursor:pointer; } .btn:hover{transform:translateY(-1px)} .btn--solid{background:var(--yellow); color:#111} .btn--solid:hover{background:var(--yellow-deep)} .btn--ghost{background:transparent; color:var(--yellow)} .btn--ghost:hover{background:rgba(255,212,0,.1)} .btn--big{font-size:1.7rem; padding:18px 34px; width:100%; max-width:460px} .btn-row{display:flex; flex-wrap:wrap; gap:14px; margin-top:26px}/* header */ .site-header{ position:sticky; top:0; z-index:60; background:rgba(18,18,18,.94); backdrop-filter:blur(6px); border-bottom:1px solid var(--line); } .site-header .wrap{display:flex; align-items:center; gap:18px; min-height:64px} .logo{font-size:1.55rem; color:var(--text); text-decoration:none; letter-spacing:.06em; white-space:nowrap} .logo span{color:var(--yellow)} .main-nav{margin-left:auto; display:flex; gap:22px} .main-nav a{ color:var(--text); text-decoration:none; font-size:.95rem; font-weight:500; padding:6px 2px; border-bottom:2px solid transparent; } .main-nav a:hover, .main-nav a[aria-current="page"]{color:var(--yellow); border-bottom-color:var(--yellow)} .header-call{ display:none; margin-left:6px; font-size:1.1rem; padding:9px 18px; } @media (min-width:820px){ body{padding-bottom:0} .header-call{display:inline-block} } @media (max-width:560px){ .main-nav{gap:14px} .main-nav a{font-size:.85rem} }/* hero */ .hero{ padding:64px 0 56px; background: radial-gradient(1100px 420px at 85% -10%, rgba(255,212,0,.08), transparent 60%), var(--ink); border-bottom:1px solid var(--line); } .hero h1 .hl{color:var(--yellow)} .hero .lead{font-size:1.15rem; max-width:640px; margin-top:14px; color:var(--muted)} .hero .lead strong{color:var(--text)}/* trust bar */ .trust{display:flex; flex-wrap:wrap; gap:10px; padding:0; list-style:none} .trust li{ background:var(--panel-2); border:1px solid var(--line); border-radius:999px; padding:8px 16px; font-size:.88rem; font-weight:500; display:flex; align-items:center; gap:8px; } .trust li::before{content:""; width:7px; height:7px; border-radius:50%; background:var(--yellow); flex:none}/* pathways */ .pathways{display:grid; gap:18px; grid-template-columns:1fr} @media (min-width:720px){.pathways{grid-template-columns:1fr 1fr}} .pathway{ display:block; text-decoration:none; color:var(--text); background:var(--panel); border:1px solid var(--line); border-left:5px solid var(--yellow); border-radius:var(--radius); padding:26px 24px; transition:border-color .12s, transform .12s; } .pathway:hover{transform:translateY(-2px); border-color:var(--yellow)} .pathway h3{color:var(--yellow); margin-bottom:8px} .pathway p{color:var(--muted); margin:0; font-size:.98rem}/* cards / grids */ .grid{display:grid; gap:18px; grid-template-columns:1fr} @media (min-width:640px){.grid--2{grid-template-columns:1fr 1fr}} @media (min-width:640px){.grid--3{grid-template-columns:1fr 1fr}} @media (min-width:960px){.grid--3{grid-template-columns:1fr 1fr 1fr}} .card{ background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:24px; display:flex; flex-direction:column; gap:10px; } .card h3 a{color:var(--text); text-decoration:none} .card h3 a:hover{color:var(--yellow)} .card p{color:var(--muted); font-size:.97rem; margin:0; flex:1} .card .more{color:var(--yellow); text-decoration:none; font-weight:700; font-size:.92rem} .card .more:hover{text-decoration:underline}/* price tables */ .price-table{width:100%; border-collapse:collapse; margin:10px 0 6px} .price-table th{ text-align:left; font-family:'Bebas Neue',sans-serif; font-size:1.2rem; letter-spacing:.06em; color:var(--yellow); padding:14px 10px 8px; border-bottom:2px solid var(--yellow); } .price-table td{padding:13px 10px; border-bottom:1px solid var(--line); vertical-align:top} .price-table td:last-child{white-space:nowrap; text-align:right} .price-val{color:var(--yellow); font-size:1.35rem} .price-note{font-size:.9rem; color:var(--muted); margin-top:10px}/* faq */ .faq details{ background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); margin-bottom:12px; overflow:hidden; } .faq summary{ cursor:pointer; list-style:none; padding:18px 20px; font-weight:700; font-size:1.02rem; display:flex; justify-content:space-between; align-items:center; gap:14px; } .faq summary::-webkit-details-marker{display:none} .faq summary::after{content:"+"; color:var(--yellow); font-size:1.5rem; line-height:1; flex:none} .faq details[open] summary::after{content:"\2212"} .faq details[open] summary{color:var(--yellow)} .faq .faq-a{padding:0 20px 18px; color:var(--muted)}/* form */ .quote-form{ background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:28px 24px; max-width:640px; } .quote-form label{display:block; font-weight:700; font-size:.92rem; margin:16px 0 6px} .quote-form label:first-of-type{margin-top:0} .quote-form input,.quote-form select,.quote-form textarea{ width:100%; background:var(--ink); border:1px solid var(--line); border-radius:8px; color:var(--text); font:inherit; padding:12px 14px; } .quote-form input:focus,.quote-form select:focus,.quote-form textarea:focus{border-color:var(--yellow)} .quote-form button{width:100%; margin-top:22px} .form-alt{margin-top:16px; font-size:.95rem; color:var(--muted)} .form-alt a{font-weight:700}/* reviews */ .review-card blockquote{color:var(--muted); font-style:italic} .stars{color:var(--yellow); letter-spacing:.15em; font-size:1.05rem} .review-card cite{display:block; margin-top:10px; font-style:normal; font-weight:700; font-size:.92rem}/* area links */ .area-links{display:flex; flex-wrap:wrap; gap:10px; list-style:none; padding:0} .area-links a{ display:inline-block; background:var(--panel-2); border:1px solid var(--line); color:var(--text); text-decoration:none; border-radius:999px; padding:8px 16px; font-size:.92rem; } .area-links a:hover{border-color:var(--yellow); color:var(--yellow)}/* CTA band */ .cta-band{ background:var(--yellow); color:#111; text-align:center; padding:52px 0; } .cta-band h2{color:#111} .cta-band p{max-width:560px; margin:0 auto 22px; font-weight:500} .cta-band .btn{background:#111; color:var(--yellow); border-color:#111; font-size:1.6rem} .cta-band .btn:hover{background:#000}/* footer */ .site-footer{background:#0d0d0d; border-top:1px solid var(--line); padding:52px 0 120px; font-size:.94rem} @media (min-width:820px){.site-footer{padding-bottom:52px}} .footer-grid{display:grid; gap:34px; grid-template-columns:1fr} @media (min-width:820px){.footer-grid{grid-template-columns:1.2fr 1fr 1.4fr}} .site-footer h3{color:var(--yellow); font-size:1.15rem; margin-bottom:12px} .site-footer ul{list-style:none} .site-footer li{margin-bottom:8px} .site-footer a{color:var(--muted); text-decoration:none} .site-footer a:hover{color:var(--yellow)} .site-footer address{font-style:normal; color:var(--muted); line-height:1.8} .footer-areas{display:flex; flex-wrap:wrap; gap:6px 14px; list-style:none} .footer-areas li{margin:0} .copyright{margin-top:36px; padding-top:20px; border-top:1px solid var(--line); color:var(--muted); font-size:.85rem}/* sticky mobile call bar */ .sticky-call{ position:fixed; left:0; right:0; bottom:0; z-index:70; display:flex; gap:1px; background:var(--line); border-top:2px solid var(--yellow); } .sticky-call a{ flex:1; text-align:center; text-decoration:none; padding:16px 8px; font-family:'Bebas Neue',sans-serif; font-size:1.35rem; letter-spacing:.06em; } .sticky-call .call{background:var(--yellow); color:#111} .sticky-call .wa{background:#161616; color:var(--yellow)} @media (min-width:820px){.sticky-call{display:none}}/* misc */ .map-placeholder{ background:var(--panel-2); border:2px dashed var(--line); border-radius:var(--radius); min-height:280px; display:flex; align-items:center; justify-content:center; color:var(--muted); text-align:center; padding:20px; } .two-col{display:grid; gap:36px; grid-template-columns:1fr} @media (min-width:860px){.two-col{grid-template-columns:1fr 1fr}} .checklist{list-style:none; margin:12px 0 6px} .checklist li{padding-left:28px; position:relative; margin-bottom:10px} .checklist li::before{content:"\2713"; position:absolute; left:0; color:var(--yellow); font-weight:700}/* --- WordPress theme heading override (added) --- */ h1,h2,h3{color:var(--text) !important} .hero h1 .hl{color:var(--yellow) !important} .pathway h3{color:var(--yellow) !important} .card h3 a{color:var(--text) !important} .card h3 a:hover{color:var(--yellow) !important} h1,h2,h3{text-shadow:none}

Typically with you in 45–60 minutes · 24/7

Locksmith Spennymoor

Locksmith serving Spennymoor and surrounding areas, day and night. Non-destructive entry from £59 — no call-out fee, no VAT, price agreed on the phone before I travel.

  • Trading since 2007
  • Ex-military & DBS checked
  • No call-out fee
  • No VAT
  • 1-year guarantee
  • Non-destructive entry
  • 24/7 — days, nights, holidays

A local locksmith for Spennymoor

Spennymoor is the far north-western reach of my coverage, and I'll be straight about what that means: forty-five minutes to an hour for an emergency, not the “fifteen minutes away” fiction some national firms tell everyone regardless of geography. If someone closer can genuinely help you faster, use them. But if you want a fixed price, a DBS-checked locksmith with nearly twenty years on the tools, and no call-out fee even at this distance — that's what I offer Spennymoor.

Where I'm strongest here is planned work, where the journey doesn't matter but the workmanship does. Lock changes on a new home — every buyer should, since you can't know how many keys the last owners cut. Anti-snap cylinder upgrades from £89 on the uPVC doors that dominate Spennymoor's estates. BS3621 mortice upgrades at £99 on the older terraces around the town centre, where original locks often fall short of what insurers specify. Landlord lock changes between tenants, invoiced properly.

Booked-in visits mean I arrive with exactly the right parts and batch nearby jobs together — so despite the distance, prices stay identical to my home patch: uPVC services £59, mechanisms from £120, PAS24 handles £89, and never VAT on anything. Every part and every job carries the same one-year guarantee.

If you're in Spennymoor and weighing me against somebody closer, here's the honest comparison: a genuinely local independent may beat me on arrival time, and if minutes matter most, choose them. Where I tend to win is on everything else — fixed pricing with no call-out fee or VAT, nearly twenty years' experience across every door type, parts stocked on the van, and a one-year guarantee — which is why plenty of Spennymoor customers decide the extra few minutes are worth it.

Emergencies are still covered around the clock — £59 entry, non-destructive wherever possible, honest ETA given when you ring. For lockouts, lock changes or a security upgrade anywhere in Spennymoor and the surrounding villages, call 07543 554669 for a free quote.

Services in Spennymoor

Prices in Spennymoor

Popular jobsFixed price
Gain entry (pick / bypass)£59
Open & replace euro cylinder£79
Upgrade to anti-snap cylinderfrom £89
BS3621 5-lever mortice — opened, replaced & upgraded£99
uPVC door service & adjustment£59

No call-out fee. No VAT. Free quotes on the phone. See the full price list →

Spennymoor locksmith FAQ

How long would you take to reach Spennymoor in an emergency?

Realistically 45–60 minutes — I'd rather tell you that straight than pretend otherwise. For planned work, we book a time and I arrive with the right parts.

Is there an extra charge for the distance?

No — no call-out fee applies everywhere I work, Spennymoor included, and prices match my home patch exactly. No VAT either.

What planned work do you do in Spennymoor?

Lock changes for new homeowners and landlords, anti-snap upgrades from £89, BS3621 mortice upgrades at £99, and uPVC door services and repairs — all guaranteed for a year.

Free quote for Spennymoor

Prefer to talk? Fastest is always a call: 07543 554669 — free quote, honest ETA.

uPVCWoodComposite CarOther

Or tap to call 07543 554669 / message on WhatsApp.

One call. One locksmith. Sorted.

Locked out in Spennymoor? Free quote and an honest ETA in under two minutes — typically 45–60 minutes away.

☎ Call 07543 554669
Scroll to Top