Set character limits before users hit them
Most CMSes let you enforce maximum character counts. Fewer make it clear to the person typing that the limit exists before they've already exceeded it.
That difference matters. A counter that appears only after you've typed too much feels like criticism. A counter present from the start is just information.
Show the limit at zero characters
If your meta description field caps at 155 characters, display "0/155" when the field is empty. Not as an error state — as a neutral fact. The user sees the boundary before they invest effort.
This is especially important for fields where the constraint isn't arbitrary. Title tags, social share text, SMS messages, and URL slugs all have functional limits. Showing the limit up front treats it as a design parameter, not a surprise.
Count down, not up
Some systems show remaining characters instead of used characters. "155 remaining" becomes "10 remaining" becomes "0 remaining." This works when the limit is the salient fact — when you're writing into a strict container.
Count-up works when the limit is generous and you want to show progress. Count-down works when the limit is tight and you want to show budget. Pick the one that matches how the constraint actually feels.
For most short-form web fields, count-down is clearer.
Change state before zero
Don't wait until the user hits the limit to change the visual treatment. Shift the counter to a warning color at 90% or when 10 characters remain — whichever comes first. This gives them a moment to finish the thought cleanly instead of stopping mid-word.
The warning state isn't an error. It's a signal that they're approaching the edge of the usable space. That's useful information while they still have room to act on it.
Pair the counter with enforcement
If you show a character limit, enforce it. Displaying "0/155" and then letting someone type 200 characters makes the counter decorative. Either the limit matters or it doesn't.
Enforcement can be soft — you allow the extra characters but mark them as likely to be truncated in display — or hard, where the field simply stops accepting input. Hard enforcement is clearer for fields with absolute technical limits. Soft enforcement works for fields where exceeding the limit degrades the experience but doesn't break functionality.
Either way, the counter and the behavior need to agree.
Apply this to every constrained field
If you've capped the length, show the cap. Meta descriptions, page titles, image alt text, excerpt fields, social media previews, SMS notifications, URL slugs — all of these have practical limits. Making those limits visible isn't hand-holding. It's showing the actual shape of the space someone is writing into.
Validation messages fix mistakes after they happen. Character counters prevent them before they occur. The counter is structural information, not a correction.
Set the limit, display it, and enforce it consistently. That's the entire method.