✦ Handcrafted Custom Neon Signs

LIGHT UP
YOUR WORLD

Bespoke neon signs for businesses, events, and homes. Designed to glow, built to last, impossible to ignore.

Order Your Sign See What We Do
OPEN 24 HOURS
500+
Signs Delivered
12
Years Experience
48H
Design Turnaround
100%
Custom Made

What We Offer

Signs for Every
Space & Story

🏪

Business Signage

Make your storefront unforgettable. Logo signs, open signs, window displays — crafted to match your brand perfectly.

🎉

Events & Weddings

The perfect backdrop for any celebration. Custom quotes, names, and designs that photograph beautifully and create lasting memories.

🏠

Home Décor

Turn any room into a statement. Gaming dens, living rooms, bars — your words and designs, glowing on your wall.

🎨

Fully Custom

Got a wild idea? We love those. Share your vision and our designers will make it glow — any shape, any color, any size.

Don't Just Take
Our Word for It

★★★★★

"Ordered a custom sign for our bar opening and it was the most photographed thing all night. The quality is incredible — glows so beautifully even in daylight."

JM
Jamie M.
Bar Owner, Manchester
★★★★★

"Got our wedding names in neon — every single guest stopped to take a photo with it. Now it hangs in our living room and we love it every day."

SR
Sophie & Ryan
Wedding, June 2025
★★★★★

"Crazy fast turnaround — design proof in 24 hours and sign delivered within a week. It transformed our studio. Clients always comment on it."

KL
Kira L.
Photography Studio Owner
★★★★★

"Second order with GP Light Sign. The team went above and beyond to match our exact brand colors. Looks absolutely stunning in the shop window."

DP
Dan P.
Retail Store, London
★★★★★

"Bought a 'Game Over' sign for my gaming room. The glow is insane and it's been running non-stop for a year with zero issues. Worth every penny."

TW
Tom W.
Home Décor Customer
★★★★★

"The online design tool made it so easy to visualise exactly what I wanted. What arrived was even better than the mockup. Absolutely flawless."

AL
Aisha L.
Event Planner

Build Your Sign
Right Here

YOUR NAME

✦ Live preview — this is how your sign will look

From Idea to
Glowing Reality

01

Tell Us Your Vision

Share your idea — a quote, logo, shape, or rough sketch. The weirder the better.

02

Design Proof

We send a digital mockup within 48 hours. Tweak it until it's exactly right.

03

Handcrafted

Your sign is built by skilled artisans using premium LED neon flex — vibrant, energy-efficient, and long-lasting.

04

Delivered & Glowing

Packaged safely and shipped to your door. Plug in and light up your space.

Instant Price
Estimate

Sign Size
Font Complexity
Backing Board
Delivery
Estimated price from
$100
Final price confirmed in your free quote. No hidden fees, no surprises.
Get My Exact Quote →

Questions?
We've Got Answers

Design proofs are sent within 48 hours of your order. Once approved, production takes 5–7 business days. Express options are available for 3–5 day turnaround. We'll confirm exact timelines in your quote.
We make signs from as small as 20cm up to 200cm+ wide. For very large or complex installations, contact us directly and we'll work out the best solution for your space.
Our LED neon flex is low-voltage, low-heat and safe for indoor use. We also offer IP65-rated weatherproof options for outdoor and semi-outdoor installations (covered patios, storefronts etc). Just let us know when ordering.
All signs come with a 24-month warranty covering manufacturing defects. Our LED neon has an expected lifespan of 50,000+ hours. If anything goes wrong, we'll repair or replace it — no quibble.
Because every sign is made to order, we can't accept returns for change of mind. However, if your sign arrives damaged or has a manufacturing defect, we'll replace it free of charge. We always send a proof for your approval before production to avoid any issues.
Every sign comes with a hanging kit and clear instructions. For cleaning, simply wipe with a soft dry cloth — no liquids. Signs can be switched on and off freely; there's no warm-up time needed and they're cool to touch.
Yes! We ship worldwide. Shipping costs and times vary by destination and are calculated at checkout. All signs are securely double-boxed with custom foam inserts for safe transit.

Get Your
Free Quote

✦  Thanks! We'll get back to you with a quote within 24 hours.

Secure Your Order
with a Deposit

How the deposit works

Once we've agreed your quote, pay a 50% deposit to lock in your order and get into our production queue. We'll send your design proof within 48 hours of receiving payment.

The remaining 50% balance is due once you've approved your proof and before we dispatch your sign.

  • No hidden fees — the price in your quote is the price you pay
  • Design proof sent within 48 hours of deposit
  • Full refund if you cancel before proof approval
  • Secure payment processed by Stripe
  • Visa, Mastercard, Amex, Apple Pay & Google Pay accepted
🔒 SSL Secured
💳 Stripe
🛡 PCI Compliant
✦ 24-Month Warranty
Pay Deposit
Enter the deposit amount from your quote
Deposit Amount (50%)
Edit below to match your quote
$50
🔒  Card details handled securely by Stripe
MM / YY
• • •
VISA MC AMEX DISC
🔐 All payments secured by Stripe — we never store your card details
Powered by Stripe · PayPal · Apple Pay · Google Pay
⚠️ To go live: Connect your Stripe account — card, Apple Pay & Google Pay are handled automatically. For PayPal, add your PayPal Business client ID. This is a demo of the payment flow.

Deposit Received!

Thank you — your deposit has been processed. We'll send your design proof to your email within 48 hours. Check your inbox for a payment confirmation.

Neon Tips, Ideas
& Inspiration

HOW TO
Buying Guide

LED vs Traditional Glass Neon: Which Is Right for You?

We break down the real differences between classic glass neon tubes and modern LED neon flex — cost, safety, brightness, and lifespan.

8 min read · May 2026 Read →
IDEAS
Inspiration

10 Neon Sign Ideas That Will Transform Your Home Bar

From classic cocktail quotes to sports team logos — our favourite ideas for lighting up your home bar and making it the envy of the street.

5 min read · Apr 2026 Read →
WEDDING
Events

Why Every Wedding Needs a Neon Sign (And How to Pick Yours)

Neon signs are one of the most-photographed wedding elements of the decade. Here's how to choose the perfect sign for your big day.

6 min read · Mar 2026 Read →

Get Exclusive Deals
& Neon Inspo

Join 2,000+ neon lovers. Get early access to new designs, seasonal offers, and sign inspiration delivered straight to your inbox. No spam — ever.

Chat with us! 💬 let currentColor = '#ff2d78'; let currentShadow = '255,45,120'; let currentFont = "'Bebas Neue', sans-serif"; const sizes = { 1: { fs: 'clamp(1.5rem,4vw,2.5rem)', label: 'Small' }, 2: { fs: 'clamp(2rem,6vw,4rem)', label: 'Medium' }, 3: { fs: 'clamp(2.8rem,8vw,6rem)', label: 'Large' } }; function updatePreview() { const text = document.getElementById('signText').value || 'YOUR NAME'; const sign = document.getElementById('previewSign'); sign.textContent = text; } function applyGlow() { const sign = document.getElementById('previewSign'); sign.style.color = currentColor; sign.style.fontFamily = currentFont; sign.style.textShadow = ` 0 0 5px #fff, 0 0 12px ${currentColor}, 0 0 30px ${currentColor}, 0 0 60px rgba(${currentShadow},0.6), 0 0 100px rgba(${currentShadow},0.3) `; } function setColor(el) { document.querySelectorAll('.swatch').forEach(s => s.classList.remove('active')); el.classList.add('active'); currentColor = el.dataset.color; currentShadow = el.dataset.shadow; applyGlow(); } function setFont(el) { document.querySelectorAll('.font-btn').forEach(b => b.classList.remove('active')); el.classList.add('active'); currentFont = el.dataset.font; applyGlow(); } function updateSize(val) { const sign = document.getElementById('previewSign'); sign.style.fontSize = sizes[val].fs; document.getElementById('sizeVal').textContent = sizes[val].label; } function setBg(el) { document.querySelectorAll('.bg-btn').forEach(b => b.classList.remove('active')); el.classList.add('active'); document.getElementById('previewBox').style.background = el.dataset.bg; } function prefillOrder() { const text = document.getElementById('signText').value || 'YOUR NAME'; const colorEl = document.querySelector('.swatch.active'); const colorName = colorEl ? colorEl.style.background : currentColor; const fontEl = document.querySelector('.font-btn.active'); const fontName = fontEl ? fontEl.textContent : 'Bold Block'; const sizeEl = document.getElementById('sizeVal'); const sizeName = sizeEl ? sizeEl.textContent : 'Medium'; const subject = encodeURIComponent(`Neon Sign Order: "${text}"`); const body = encodeURIComponent(`Hi, I'd like to order the following neon sign:\n\nText: ${text}\nColor: ${colorName}\nFont: ${fontName}\nSize: ${sizeName}\n\nPlease send me a quote!`); const link = document.querySelector('.order-btn-wrap a'); link.href = `mailto:guerbyperalte02@icloud.com?subject=${subject}&body=${body}`; } function loadExample(text, color, shadow, font, bg) { // Set text document.getElementById('signText').value = text; // Set color swatch currentColor = color; currentShadow = shadow; document.querySelectorAll('.swatch').forEach(s => { s.classList.toggle('active', s.dataset.color === color); }); // Set font currentFont = font; document.querySelectorAll('.font-btn').forEach(b => { b.classList.toggle('active', b.dataset.font === font); }); // Set bg document.getElementById('previewBox').style.background = bg; document.querySelectorAll('.bg-btn').forEach(b => { b.classList.toggle('active', b.dataset.bg === bg); }); updatePreview(); applyGlow(); // Scroll to designer document.getElementById('designer').scrollIntoView({ behavior: 'smooth' }); } // Price estimator const priceState = { size: 100, font: 0, board: 0, delivery: 0 }; function updatePrice(el) { const type = el.dataset.type; document.querySelectorAll(`.price-btn[data-type="${type}"]`).forEach(b => b.classList.remove('active')); el.classList.add('active'); priceState[type] = parseInt(el.dataset.val); const total = Object.values(priceState).reduce((a, b) => a + b, 0); document.getElementById('priceAmount').textContent = `$${total}`; } // FAQ toggle function toggleFaq(btn) { const item = btn.parentElement; const isOpen = item.classList.contains('open'); document.querySelectorAll('.faq-item').forEach(i => i.classList.remove('open')); if (!isOpen) item.classList.add('open'); } // Quote form function submitQuote() { const fname = document.getElementById('fname').value.trim(); const femail = document.getElementById('femail').value.trim(); if (!fname || !femail) { alert('Please fill in at least your name and email.'); return; } document.getElementById('quoteForm').style.opacity = '0.4'; document.querySelector('.form-submit').disabled = true; document.getElementById('formSuccess').style.display = 'block'; } // Payment method switcher let currentPayMethod = 'card'; function switchPayMethod(method, el) { document.querySelectorAll('.pay-tab').forEach(t => t.classList.remove('active')); el.classList.add('active'); ['card','paypal','apple','google'].forEach(m => { const el = document.getElementById('method-' + m); if (el) el.style.display = m === method ? 'block' : 'none'; }); currentPayMethod = method; const labels = { card: '💳 Pay', paypal: '🅿 Pay with PayPal', apple: ' Pay with Apple Pay', google: 'G Pay with Google Pay' }; const amount = document.getElementById('payBtnAmount').textContent; document.getElementById('stripePayBtn').innerHTML = `🔒 ${labels[method]} ${amount}`; } // Stripe deposit function updateDeposit(val) { const amount = parseFloat(val) || 0; document.getElementById('depositDisplay').textContent = `$${amount.toFixed(0)}`; document.getElementById('payBtnAmount').textContent = `$${amount.toFixed(0)}`; } function handleStripePay() { const name = document.getElementById('payerName').value.trim(); const email = document.getElementById('payerEmail').value.trim(); const amount = document.getElementById('depositInput').value; if (!name || !email) { alert('Please enter your name and email address.'); return; } if (!amount || parseFloat(amount) < 1) { alert('Please enter a valid deposit amount.'); return; } const btn = document.getElementById('stripePayBtn'); btn.disabled = true; btn.innerHTML = ' Processing...'; // Simulate Stripe processing (replace with real Stripe.js in production) setTimeout(() => { document.getElementById('stripeFormWrap').style.display = 'none'; document.getElementById('stripeSuccess').style.display = 'block'; }, 2000); } // Blog posts data const blogPosts = [ { title: "LED vs Traditional Glass Neon: Which Is Right for You?", tag: "Buying Guide · 8 min read · May 2026", content: `

The Short Answer

For most customers — businesses, homes, and events — LED neon flex is the better choice. It's safer, cheaper to run, more durable, and easier to ship. Traditional glass neon has a unique aesthetic warmth, but comes with trade-offs that rarely make sense outside specialist applications.

What Is Traditional Glass Neon?

Classic neon signs use glass tubes filled with noble gases (neon, argon, krypton) that glow when electrified at high voltage. They've been around since the 1910s and have an unmistakable warm, slightly buzzing glow that many people love.

What Is LED Neon Flex?

LED neon flex is a flexible silicone tube containing LED strips. It mimics the look of glass neon very closely, but runs at low voltage, produces almost no heat, and is virtually unbreakable.

How They Compare

Our Verdict

All GP Light Sign signs are made with premium LED neon flex. We believe it offers the best combination of quality, safety, and value — and our customers agree. If you specifically want the vintage glass neon aesthetic, get in touch and we can discuss options.

` }, { title: "10 Neon Sign Ideas That Will Transform Your Home Bar", tag: "Inspiration · 5 min read · Apr 2026", content: `

Why Home Bars Love Neon

Neon signs are the fastest way to turn a spare room or corner into a proper bar experience. The glow creates instant atmosphere, they look incredible in photos, and they're a talking point every time guests visit.

Our Top 10 Ideas

Colour Tips for Home Bars

Warm colours (amber, orange, red) create a pub-like cosiness. Cool blues and whites feel more modern and cocktail-bar-ish. Green is great for a sports bar vibe. When in doubt, pink is universally loved.

Ready to design yours? Use our Design Studio above to see exactly how it'll look before you order.

` }, { title: "Why Every Wedding Needs a Neon Sign (And How to Pick Yours)", tag: "Events · 6 min read · Mar 2026", content: `

The Most Photographed Wedding Accessory of the Decade

Walk through any wedding Instagram feed and you'll spot neon. They create a natural photo backdrop, add a warm glow to evening receptions, and give guests something to interact with. They're also a keepsake you can hang at home afterwards.

Where to Use Your Wedding Neon Sign

What to Put on Your Wedding Neon

How Far in Advance Should You Order?

We recommend ordering at least 4–6 weeks before your wedding date. This gives time for design approval, production, and a buffer for delivery. During peak wedding season (May–September) we get busy — the earlier the better.

Hiring vs Buying

Buying your own sign is often better value than hiring for one day, especially since you get to keep it as a memento. Many couples hang their sign in their home after the wedding. Get in touch and we'll find the right option for your budget.

` } ]; function openBlogPost(index) { const post = blogPosts[index]; document.getElementById('blogModalTitle').textContent = post.title; document.getElementById('blogModalBody').innerHTML = `
${post.tag}
${post.content} `; openModal('blog'); } // Email signup function handleEmailSignup() { const email = document.getElementById('signupEmail').value.trim(); if (!email || !email.includes('@')) { alert('Please enter a valid email address.'); return; } document.getElementById('signupEmail').disabled = true; document.querySelector('.email-signup-btn').disabled = true; document.getElementById('emailSuccessMsg').style.display = 'block'; } // Cookie banner function acceptCookies() { localStorage.setItem('cookieConsent', 'accepted'); document.getElementById('cookieBanner').classList.remove('visible'); } function declineCookies() { localStorage.setItem('cookieConsent', 'declined'); document.getElementById('cookieBanner').classList.remove('visible'); } window.addEventListener('load', () => { if (!localStorage.getItem('cookieConsent')) { setTimeout(() => document.getElementById('cookieBanner').classList.add('visible'), 1200); } }); // Modals function openModal(type) { document.getElementById(type + 'Modal').classList.add('open'); document.body.style.overflow = 'hidden'; } function closeModal(type) { document.getElementById(type + 'Modal').classList.remove('open'); document.body.style.overflow = ''; } // Close modal on overlay click document.querySelectorAll('.modal-overlay').forEach(overlay => { overlay.addEventListener('click', e => { if (e.target === overlay) { overlay.classList.remove('open'); document.body.style.overflow = ''; } }); }); // Close on Escape key document.addEventListener('keydown', e => { if (e.key === 'Escape') { document.querySelectorAll('.modal-overlay.open').forEach(m => m.classList.remove('open')); document.body.style.overflow = ''; } }); // Init applyGlow(); updateSize(2); // Stripe Integration const BACKEND_URL = 'https://gp-light-sign-backend.up.railway.app'; // update after Railway deploy const stripe = Stripe('pk_test_51TVg3TAmjYqxiWTAYuqsEJ01gKhL9ofHEQ828eqlruvaQXImz7C9T7eqr3vGn8lzfNQczEOhSRrVpf2T5NArnDQo00zCsS95r3'); let stripeElements = null; let cardElement = null; async function initStripe() { stripeElements = stripe.elements(); cardElement = stripeElements.create('card', { style: { base: { color: '#f0eaf8', fontFamily: 'DM Sans, sans-serif', fontSize: '15px', '::placeholder': { color: '#7a6e8e' }, backgroundColor: 'transparent', }, invalid: { color: '#ff2d78' } } }); const cardBox = document.querySelector('#method-card .stripe-card-box'); if (cardBox) { cardBox.innerHTML = ''; cardBox.style.padding = '0.75rem 1rem'; cardElement.mount(cardBox); } } async function handleStripePay() { const name = document.getElementById('payerName').value.trim(); const email = document.getElementById('payerEmail').value.trim(); const amount = parseFloat(document.getElementById('depositInput').value); const orderRef = document.getElementById('orderRef').value.trim(); if (!name || !email) { alert('Please enter your name and email address.'); return; } if (!amount || amount < 1) { alert('Please enter a valid deposit amount.'); return; } const btn = document.getElementById('stripePayBtn'); btn.disabled = true; btn.innerHTML = ' Processing...'; try { if (currentPayMethod === 'card' && cardElement) { // 1. Ask backend to create a PaymentIntent const res = await fetch(`${BACKEND_URL}/create-payment-intent`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ amount, name, email, orderRef }) }); const { clientSecret, error: backendError } = await res.json(); if (backendError) throw new Error(backendError); // 2. Confirm the card payment with Stripe const { error, paymentIntent } = await stripe.confirmCardPayment(clientSecret, { payment_method: { card: cardElement, billing_details: { name, email } } }); if (error) { alert(error.message); btn.disabled = false; btn.innerHTML = `🔒 Pay $${amount} Deposit`; return; } if (paymentIntent.status === 'succeeded') { document.getElementById('stripeFormWrap').style.display = 'none'; document.getElementById('stripeSuccess').style.display = 'block'; } } else if (currentPayMethod === 'paypal') { // PayPal redirect const res = await fetch(`${BACKEND_URL}/create-paypal-order`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ amount, name, email, orderRef }) }); const { id, error: ppError } = await res.json(); if (ppError) throw new Error(ppError); // Redirect to PayPal checkout window.location.href = `https://www.sandbox.paypal.com/checkoutnow?token=${id}`; } else { // Apple Pay / Google Pay — coming via Stripe Payment Request Button alert('Apple Pay and Google Pay will be available once the backend is deployed. Use card payment for now.'); btn.disabled = false; btn.innerHTML = `🔒 Pay $${amount} Deposit`; } } catch (err) { alert('Payment error: ' + err.message); btn.disabled = false; btn.innerHTML = `🔒 Pay $${amount} Deposit`; } } // Init Stripe on page load window.addEventListener('load', initStripe);