| UI or UX | UI + UX - Read-only scalar value gauge within a known range | UI + UX - Measurable system-operation progress indicator | UI + UX - Single-value bounded range control | UI + UX - Bounded incrementable numeric-value control |
| UI guidance | Show the measured object, current value, unit, minimum and maximum context, and threshold bands close to the gauge so users can interpret the reading without guessing. | Show a labeled bar with a track, filled value, and nearby helper text that reports the measurable unit such as percent, bytes, rows, files, records, or stages. | Render one thumb on a track with a persistent label, visible current value, unit, min and max labels, focus state, and disabled or read-only state. | Render a visible label, editable numeric value, unit, lower and upper bounds, plus and minus controls, focus state, and warning, error, disabled, and read-only states. |
| UX guidance | Use a meter when users need to judge the current level of a bounded resource, score, capacity, or risk, not when they are completing a task or choosing a value. | Use a progress bar when the system can honestly report movement toward a known finish and users need to decide whether to wait, cancel, retry, continue elsewhere, or return later. | Help users adjust one bounded value quickly when the relative position or intensity matters. | Use a spinbutton when users adjust a small count or bounded quantity by one or a few steps and still may need to type the exact number. |
| Good UI | An account storage card says 86 GB of 100 GB used, marks 70 GB as warning and 90 GB as critical, and labels the current state Critical. | A document upload card says Uploading evidence.zip, shows 64%, 32 of 50 MB, a Cancel action, and keeps the rest of the form usable. | A Brightness slider shows 55%, dim and bright endpoint labels, visible focus, and a paired number input. | A Guests control shows label, value 2, minus and plus buttons, range 0 to 9, and a clear unit beside the field. |
| Bad UI | A red-to-green bar says 89% with no unit, minimum, maximum, or explanation of whether high is good. | A blue bar fills across the top of the page with no label, no percent, and no affected object. | An unlabeled rail has no visible value, min, max, or unit. | An account ID field has plus and minus buttons, implying the identifier can be stepped. |
| Good UX | A user sees storage at 86 of 100 GB, understands the account is in the critical band, opens Manage storage, and deletes old exports before uploads are blocked. | A user uploads evidence.zip, sees progress move from 12% to 64%, cancels before commit, retries after a network error, and gets a completed receipt only after server processing succeeds. | A user adjusts brightness with arrow keys, types 65 in the number field, sees both controls synchronize, and gets a warning near battery-heavy values. | A user adds one guest, types 7, clears the required field, then sees a specific error and restores a valid count without losing context. |
| Bad UX | A user watches a meter animate during upload and waits for it to reach full even though it represents remaining quota, not upload progress. | A fake progress bar inches to 99% for minutes with no elapsed time, cancel, retry, or background option. | A user tries to enter $812.37 with a huge slider and cannot land on the exact cents. | A user tries to set 480 items with one-step buttons and cannot type or jump by larger increments. |
| Best fit | A current value exists inside a meaningful known range. | A system operation has a measurable total or bounded progress value. | Users adjust one bounded value such as brightness, volume, opacity, zoom, intensity, cost tolerance, or preference strength. | Users adjust a small bounded count such as guests, copies, items, seats, nights, minutes, retries, or quantity. |
| Avoid when | The value has no meaningful maximum or minimum. | Progress cannot be measured or would be guessed. | Users need to enter an exact, arbitrary, or high-stakes number. | The value is a numeric-looking identifier, code, account number, card number, phone number, postal code, date, or formatted string. |
| Required state | Normal state inside the acceptable band. | Idle state before the operation starts. | Initial value state with visible label, min, max, current value, and unit. | Initial state with visible label, default value, unit, min, max, and step. |
| Accessibility burden | Prefer the native meter element where possible because it carries the correct read-only meter semantics. | Provide an accessible name that identifies the operation and affected object. | Prefer native range input where possible. | Expose the editable value as a spinbutton or native number input with a visible label. |
| Common misuse | Using a meter to show task progress such as upload completion. | Fabricating progress values just to make users feel movement. | Using a slider for a binary on/off choice. | Using a spinbutton for numeric-looking identifiers or codes. |