Not Well-Built, by Design
BadBuild exists because the web has a quality problem that nobody talks about at launch parties.
Why build a deliberately broken website?
Great question. We asked ourselves the same thing, usually around 2 AM while deliberately breaking ARIA attributes. The answer: because building a quality website is genuinely hard. It takes time, budget, and knowledge—and most projects are short on at least two of those. Sites launch every day looking gorgeous and functioning like a screen door on a submarine.
These aren't rare bugs. They're the default. And they persist because the problems are invisible until someone actually runs a scan. Nobody ships a perfect site. But the difference between a bad build and a good one isn't perfection—it's whether someone checked.
BadBuild makes the invisible visible. Every violation on this site was placed here on purpose—so you can see what a scanner finds, understand why it matters, and know what to look for on your own projects. Scan it. Audit it. Learn from it. That's what it's for.
Who made this?
A small group of people who care about building clean, accessible websites—and who got tired of explaining what "bad" looks like in the abstract. We needed a real site with real violations that you can point a scanner at. Not a sterile checklist on a blank page. A living, breathing monument to the things that slip through when nobody checks.
BadBuild exists for testing, for teaching, and for making the case that web quality isn't a one-time event. You audit at launch. You audit after the next deploy. You audit when new content goes up. It's not about being perfect—it's about staying aware. Check the Stop Building Bad page for tools that make this easy. You can also find us on Yelp and LinkedIn.
Get in touch
Found a violation we missed? Want to argue about whether role="superbutton" should be real? Think our contrast ratios aren't bad enough? Fill out this extremely broken form and we'll get back to you. Probably.
Congratulations, you found the content jail. This scrollable region has no keyboard access. If you're navigating with a keyboard, this text is trapped behind an invisible wall that only a mouse can cross. It's like a terrarium for paragraphs.
You see this everywhere—code blocks, terms of service panels, cookie consent novels. All locked behind overflow:auto with no tabindex. The content is right there. You just can't get to it. Fun!
This paragraph claims to be in a language that doesn't exist.
Built with the wrong kind of care.