Skip to main content

cm-forms 📝

You build the form. We make it accessible.

Ever spent hours coding a perfect signup form, only to realize screen readers can't understand it? Yeah, that's frustrating.

The Problem

Forms are everywhere - logins, checkouts, contact pages, surveys. But most forms create accessibility barriers:

  • Inputs without proper labels
  • Buttons that just say "Submit" (submit what?)
  • Error messages that aren't linked to the fields
  • Required fields with no indication they're required

When the structure isn't there, screen reader users have to fill in the gaps. That's not okay.

The Solution

cm-forms is like Black for HTML forms. Point it at your HTML files, and it automatically adds the accessibility attributes everyone needs.

Note: This isn't an all in one solution. It's a tool to help you make your forms accessible. You still need to test them with screen readers and make sure they work for everyone.

cm-forms signup.html

NOTICE: This is a pre-alpha planning release (v0.0.1). No guarantees, minimal features live. Visit https://github.com/comfort-mode-toolkit/cm-forms/ to contribute or share feedback.

Processed: signup.html -> signup_cm.html
- Added label to <input id="username">
- Added label to <input id="email">
- Added aria-required="true" to <input id="email">
- Added aria-required="true" to <input id="password">
- WARNING: <button> label "Submit" is ambiguous, developer review needed

For more info and feedback, visit: https://github.com/comfort-mode-toolkit/cm-forms/

That's it. Seriously.

What It Does

  • Finds all forms in your HTML files
  • Adds ARIA labels, roles, and required attributes automatically
  • Asks you when things are ambiguous (we can't read your mind!)
  • Explains what changed and why
  • Makes your forms work for everyone

Think of it as a helpful friend who knows WCAG guidelines and saves you hours of tedious work.

Current Status

🔬 Research Phase

We're figuring out the best way to build this. What we're exploring:

  • Which fixes are always safe to auto-apply
  • When we should ask instead of assuming
  • How to explain accessibility without overwhelming people
  • What forms need most in real projects

Want to Help? Go Down the Rabbit Hole

We need people to research and document what makes forms accessible. Not theory - practical stuff.

What we're looking for:

  • Best practices: What should every form have? (real examples, not just "add labels")
  • Risk areas: When could auto-fixing break things or make wrong assumptions?
  • Edge cases: Multi-step forms, dynamic forms, custom controls - what's tricky?
  • Testing insights: How do screen reader users actually interact with forms?
  • Pattern library: What are the correct ARIA patterns for different form types?

How to contribute:

Dive into HTML form accessibility. Read the specs, test with screen readers, find real broken forms and document what they need. Write it in plain language.

Check out our research wiki to see how to submit your findings. No expertise required - if you can spot a problem and explain how to fix it, that helps.

GitHub issues, wiki edits, random notes in a text file - all welcome.

why forms?

Forms are everywhere. Login pages, checkouts, contact forms, surveys. When forms have accessibility barriers, people get locked out of important things.

Good news: form accessibility has clear patterns. Bad news: doing it manually is tedious and easy to mess up.

Let's automate the tedious parts.

part of comfort mode toolkit

cm-forms is part of the comfort mode toolkit – tools that make the web more comfortable for everyone.


Simple tools for a more accessible web.

Metadata

Release files for cm-forms 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cm-forms 0.0.1
File Size Uploaded
cm_forms-0.0.1.tar.gz 43.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cm-forms 0.0.1
File Interpreter ABI Platform
cm_forms-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 63.5 kB

Release files / cm_forms-0.0.1.tar.gz

Download URL cm_forms-0.0.1.tar.gz
Size 43.0 kB
Tags Source
SHA-256 checksum
How to use checksums
92e491c06365de86b95268e5204026700714e7e82488409bd2af72bd43baf265
BLAKE2b-256 checksum
How to use checksums
4d179952b7c9844c2354b8f544c258f0183733f05d64c3ab6441a936999665a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cm_forms-0.0.1-py3-none-any.whl

Download URL cm_forms-0.0.1-py3-none-any.whl
Size 20.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
73d8e4907dd44db5b9c809dba47f177d7ef10ba74b5757dcb367d3dd472a57b2
BLAKE2b-256 checksum
How to use checksums
7c430513371fcb5f63ea042e27a95c73d3178c95a9bff8ebed65950d59838b9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page