Practical UI repair guide
How to fix my UI when I am not a designer
For founders, product managers and developers whose app or website looks slightly off, or keeps confusing people, and who have no designer to ask. Each step gives concrete values you can apply in an afternoon.
- Updated
- Steps
- 9
- Written by
- BlackCard
The short answer
To fix your UI, diagnose before you redesign: watch five people use it and note where they hesitate. Then repair in this order. Give each screen one obvious primary action. Put all spacing on a scale based on 4 pixels. Cut type to four or five sizes with lines of 50 to 75 characters. Meet WCAG 2.2 AA contrast: 4.5:1 for normal text, 3:1 for large text and interface components. Reuse a small component set, write specific form errors, design empty, loading and error states, make touch targets at least 24 by 24 CSS pixels, and test again.
Start with step 1Step 1
Diagnose before you redesign
Watch five people, read your analytics and support tickets, and rank the problems you find.
A UI that feels wrong usually has a few specific faults, and they are rarely the ones the team argues about. Find them first. Ask five people who resemble your users to complete two or three real tasks while you watch in silence. Jakob Nielsen's model of usability testing estimates that five users reveal about 85 percent of the usability problems, and he recommends several small rounds over one large study.
Add two sources you already have. In analytics, find the step where most people abandon a flow. In support tickets, count the questions that begin with where or how. A free recording tool such as Microsoft Clarity flags rage clicks and dead clicks: repeated clicking on one spot, and clicks that produce no response. Both point at elements that look clickable and are not, or the reverse.
- Write each problem as an observation, for example: three of five people did not find the export button.
- Rank by how many people hit the problem and how badly it blocked them.
- Fix the top five. Leave the others on the list for the next round.
Step 2
Fix the hierarchy: one main thing per screen
Give every screen one primary action and an obvious reading order.
Most screens that look cluttered have a hierarchy problem. Everything has the same size, weight and colour, so nothing leads. Squint at the screen, or blur a screenshot. Whatever still stands out is your real hierarchy. It should be the page title, the main content and one primary action.
Before: a settings page with five filled blue buttons, bold labels everywhere and three heading sizes. After: one filled button for Save, the remaining actions as outlined or text buttons, labels in regular weight and one heading level per section. Nothing was removed. The page now tells you where to look.
- One filled, high-contrast button per view. Secondary actions get an outline, tertiary actions plain text.
- Rank elements with size, weight and colour, and change one of the three at a time.
- Make destructive actions visually quieter than the safe choice, and keep them away from the spot where the primary button normally sits.
- Tone down supporting text with a softer grey that still passes contrast, instead of shrinking it.
Step 3
Put spacing and alignment on a scale
Replace arbitrary gaps with a fixed set of values and line everything up on shared edges.
Uneven spacing is the most common reason an interface looks amateur, and the cheapest to repair. Pick a scale and allow no other values. A scale built on 4 pixels suits most products: 4, 8, 12, 16, 24, 32, 48, 64. Frameworks already work this way. Tailwind CSS, for example, derives its spacing utilities from a base unit of 0.25rem, which is 4 pixels at the default browser font size.
Then apply one rule: the space inside a group is smaller than the space between groups. A label sits 4 or 8 pixels from its field, fields sit 16 apart, and sections sit 32 or 48 apart. Related items look related because they are close, so you need fewer boxes and divider lines.
Before: a card with 13 pixels of padding on the left and 20 on top, a title 7 pixels above the text and a button that almost lines up with the image. After: 16 pixels of padding on every side, 8 between title and text, 16 above the button, and every element starting on the same left edge.
| Step | Value | Typical use |
|---|---|---|
| Tight | 4 px | Icon to its label, label to helper text |
| Close | 8 px | Label to field, title to subtitle |
| Default | 16 px | Padding inside cards, gap between form fields |
| Loose | 24 px | Gap between cards, padding of larger panels |
| Section | 32 to 48 px | Between groups of content on a page |
| Page | 64 px and up | Between major page sections on wide screens |
Step 4
Cut typography down to a few sizes
One typeface, four or five sizes, two weights and a comfortable line length.
Too many sizes and weights make a product look noisy. One typeface is enough for an interface. Limit yourself to four or five sizes and two weights, regular plus semibold or bold. A workable set is 14, 16, 20, 24 and 32 pixels, with 16 for body text.
Set line length and line height on purpose. Baymard Institute's article on line length recommends 50 to 75 characters per line for body text, which you can enforce in CSS with a max-width of about 70ch. For line height, 1.5 for body text and 1.2 to 1.3 for headings are safe starting values. The AAA criterion 1.4.8 Visual Presentation in WCAG points the same way: lines no wider than 80 characters and line spacing of at least 1.5 within paragraphs.
Before: a help article running the full width of a 1,440 pixel screen in 13 pixel grey text with tight lines. After: 16 pixel text in a column capped at 70 characters, line height 1.5, left-aligned, with headings two steps up the size scale. The words are the same, and people now finish reading them.
- Left-align body text. Avoid justified text, and avoid centred paragraphs longer than three lines.
- Create emphasis with weight and size before you reach for colour.
- Keep body text at 14 pixels or more, and prefer 16 on phones.
- Check that the layout survives 200 percent text zoom, as 1.4.4 Resize Text requires at level AA.
Step 5
Fix colour and contrast
Meet the WCAG 2.2 AA ratios, shrink the palette and never rely on colour alone.
Low contrast is the one fault you can measure. WCAG 2.2 level AA sets three numbers. Normal text needs a contrast ratio of at least 4.5:1 against its background. Large text needs at least 3:1, where large means 18 point or more, or 14 point bold or more, which is roughly 24 and 18.5 CSS pixels. Both come from criterion 1.4.3 Contrast (Minimum). Criterion 1.4.11 Non-text Contrast asks for at least 3:1 against adjacent colours for the parts of interface components and graphics that people need to perceive, such as input borders, icons, focus rings and chart lines.
Check every text and background pair with the WebAIM Contrast Checker. Ratios are not rounded, so 4.49:1 fails. Placeholder text counts as text. Inactive controls, pure decoration and logos are exempt.
Then reduce the palette to one scale of greys for text, borders and surfaces, one brand colour for primary actions and links, and fixed colours for success, warning and error. Before: #999999 text on white, a ratio of about 2.8:1, and a pale input border that vanishes on a cheap monitor. After: #595959 text on white, about 7:1, and a border dark enough to reach 3:1.
- Pair colour with a second signal such as an icon, a label or an underline. 1.4.1 Use of Color says colour must not be the only way information is conveyed.
- Keep a visible keyboard focus indicator on every interactive element (2.4.7 Focus Visible).
- Reserve the brand colour for things people can click.
- Test dark mode separately. Ratios do not carry over from the light theme.
Step 6
Make it consistent with a small component set
Define each element once and reuse it on every screen.
Inconsistency makes people stop and wonder whether this grey button does the same as that grey button. Take screenshots of every button, input, card and dialog in the product and place them side by side. Most teams discover several button heights and more shades of blue than anyone chose on purpose.
Reduce the collection to one small set and delete the variants. If your framework ships a component library, adopt its defaults instead of fighting them. WCAG asks for consistency at level AA too: navigation that repeats across pages keeps the same relative order (3.2.3 Consistent Navigation), and components with the same function are identified the same way (3.2.4 Consistent Identification).
| Component | Decide once |
|---|---|
| Button | Three variants (primary, secondary, text), two sizes, one corner radius, and states for hover, focus, disabled and loading |
| Text input | One height, one border colour, one focus style, and where the label and the error message go |
| Card or panel | One padding value, one radius, and either a border or a shadow, not both |
| Dialog and toast | One width, one position, one way to close |
| Icons | One icon family, one stroke weight, two sizes |
| Tokens | Colours, spacing steps, type sizes and radii as named variables |
Step 7
Repair forms and error messages
Visible labels, fewer fields, and errors that say what went wrong and how to fix it.
Forms are where a confusing interface loses people. Give every field a visible label above it. Nielsen Norman Group advises against using placeholder text as the label, because it disappears as soon as someone starts typing. Use a single column, group related fields, mark the optional ones and remove every field whose answer you never use.
For errors, follow NN/g's error-message guidelines: show the message next to the field, say in plain language what is wrong, offer the fix and keep what the person already typed. WCAG covers the same ground. An error must be identified and described in text (3.3.1 Error Identification, level A), fields need labels or instructions (3.3.2, level A), and known corrections should be suggested (3.3.3 Error Suggestion, level AA).
Before: a red banner at the top that says Invalid input, above a form that has been emptied. After: the form keeps its values, the date field shows a red border, an icon and the text Enter the date as DD.MM.YYYY, for example 05.03.2027, and keyboard focus moves to that field.
- Validate when the person leaves a field or submits, not on the first keystroke.
- Set the correct input type and autocomplete attributes, so phones show the right keyboard and browsers can fill in known details.
- Label the button with what it does: Create account, not Submit.
- Do not ask for the same information twice in one process (3.3.7 Redundant Entry).
- Offer a confirmation or an undo for anything that deletes data or spends money.
Step 8
Design the empty, loading and error states
Every key screen needs a designed answer for nothing here, still loading and something broke.
Teams design the screen full of perfect data and ship the other states by accident. Users meet those other states first: a new account is empty, a slow connection is loading and a typo produces an error. List the states for each key screen and design every one of them.
For loading, Nielsen's response-time limits are a useful guide: about 0.1 seconds feels instant, about 1 second keeps a person's train of thought intact, and about 10 seconds is the limit for holding attention. NN/g's skeleton screen guidance follows similar thresholds: no indicator under a second, a skeleton or spinner for waits of a few seconds, and a progress bar with a time estimate beyond ten.
| State | What to show | Common mistake |
|---|---|---|
| Empty, first use | One sentence on what belongs here and a button that creates the first item | A blank table with column headers |
| Empty, no results | The search term, a hint to widen it and a way to clear filters | The words No results and nothing else |
| Loading | Nothing for very short waits, then a skeleton or spinner, and a progress bar for long ones | A spinner that never ends, with no way to cancel |
| Error | What failed, whether the person's data is safe, and a retry button | A raw error code or a blank screen |
| Success | A short confirmation near the action, with the changed item visible | No feedback, so people click again |
| Partial or offline | What still works and what will sync later | Treating every failure as total |
Step 9
Check mobile and touch targets, then re-test
Make targets large enough to hit, check narrow screens, and repeat the test from step one.
WCAG 2.2 added criterion 2.5.8 Target Size (Minimum) at level AA. Targets for pointer input must be at least 24 by 24 CSS pixels. There are exceptions. A smaller target passes if it is spaced so that a 24 pixel circle centred on it touches no other target, if the same function is available through another control on the page that does meet the size, if it sits inside a sentence, if the browser determines its size, or if the presentation is essential or legally required.
Treat 24 pixels as the floor, not the goal. The AAA criterion 2.5.5 Target Size (Enhanced) asks for 44 by 44 CSS pixels. Apple's Human Interface Guidelines list 44 by 44 points as the default control size on iOS, and Google's Android accessibility guidance recommends touch targets of at least 48 by 48 dp. A practical rule for touch screens: make the tappable area 44 to 48 pixels even when the visible icon is 20, and leave at least 8 pixels between neighbours.
Next, check the layout at a width of 320 CSS pixels. 1.4.10 Reflow expects content to work at that width without scrolling in two directions. Once the fixes are in, repeat the test from the first step with five new people and the same tasks. Compare how many finish and where they hesitate. Keep what improved, and put what did not back on the list.
- Place primary actions within thumb reach, in the lower half of the screen.
- Replace hover-only menus and tooltips with something that works on tap.
- Use 16 pixel text in inputs. Smaller sizes are widely reported to trigger automatic zoom in Safari on iPhone.
- Test on a real mid-range phone in daylight, not only in the browser's device mode.
If you only have one day
The nine steps are in order of dependency, not of effort. With a single day and no test users, these five repairs give the most visible improvement for the least work.
| Fix | Rough effort | Why it comes first |
|---|---|---|
| Raise text contrast to 4.5:1 | One or two hours | Measurable, and it touches every screen at once |
| Snap all spacing to the scale | Half a day | Removes most of the unfinished look |
| One primary button per screen | One or two hours | People stop asking what to do next |
| Cap body text at about 70 characters per line | Minutes | Long text becomes readable on wide screens |
| Rewrite the five most common error messages | An hour | Fewer abandoned forms and support tickets |
Standards and the law in brief
WCAG 2.2 is a W3C Recommendation and the usual reference for accessible interfaces. It has three conformance levels, A, AA and AAA. Level AA is the common target in contracts and legislation, and it is the level this guide quotes unless it says otherwise.
In the EU, the European Accessibility Act, Directive (EU) 2019/882, has applied since 28 June 2025 to a defined list of consumer products and services, including e-commerce, consumer banking, e-books and ticketing. Microenterprises that provide services, meaning fewer than 10 staff and no more than 2 million euros in annual turnover or balance sheet total, are exempt. Each member state has its own implementing law, described on the EU's Your Europe business portal. Treat this paragraph as orientation and ask a lawyer whether and how the rules apply to you.
Free tools that find problems for you
Automated checkers catch missing labels, low contrast and broken heading order in seconds. They cannot judge whether a screen makes sense, so use them next to the user test, not in place of it.
- Lighthouse is open source and built into Chrome DevTools. It audits accessibility, performance and more for any page.
- axe DevTools by Deque is a browser extension that lists accessibility issues with the affected element and a suggested fix.
- WAVE by WebAIM overlays icons on the page to show errors, contrast failures and structure.
- The WebAIM Contrast Checker reports the ratio for two colours and whether it passes for normal text, large text and graphical objects.
- Microsoft Clarity records sessions and heatmaps. Tell visitors about it in your privacy notice and consent banner where required.
When to bring in outside help
Everything above can be done by a developer or product manager with a free week. A designer becomes worth the money when the problems sit in the structure instead of the surface: people cannot find features, flows take too many steps, or two rounds of fixes have not improved how many test users finish a task. Help also pays off when the product needs a visual identity it does not have, when the team settles design questions by taste and seniority, or when accessibility conformance is a contractual or legal requirement and you need an audit you can show. A freelance product designer suits an audit plus a component set. A UX researcher suits a product nobody understands yet. A studio suits a redesign that has to be designed and built by the same people.
BlackCard, the publisher of this guide, does this kind of work. It is a boutique design and engineering studio with a senior team, managed from Germany, working in English and German with mostly European clients. Its services include UI/UX design and branding alongside business software such as client portals, internal systems and mobile apps. Public work includes a storefront redesign for ESN on Shopify Hydrogen and the web app design for Upfront, a financing platform for small and mid-size businesses. You can find it at blackcard.dev. If your interface only has the faults described here, you may not need a studio at all.
Book a 20-minute callVisit blackcard.dev
BlackCard writes and publishes this guide.
Go deeper
- UI audit checklist you can run in one hourA one-hour UI audit checklist for non-designers: hierarchy, spacing, typography, contrast, components, forms, states and mobile, with pass criteria.
- 12 common UI mistakes and the fix for eachTwelve common UI mistakes, how to spot each one and the specific fix: weak hierarchy, random spacing, grey text, vague errors, tiny tap targets and more.
- Redesign or refactor: how to decide what your UI needsWhen to patch your UI, when to refactor it onto shared components and when to redesign, plus when hiring a designer or a studio is worth the money.
Frequently asked questions
How do I fix my UI if I am not a designer?
Work through measurable rules instead of taste. Watch five people use the product to find the real problems. Then give each screen one primary action, put all spacing on a 4 pixel scale, limit type to four or five sizes, raise text contrast to at least 4.5:1, reuse a small set of components, write specific error messages and design the empty and loading states. Test again afterwards.
What contrast ratio does WCAG 2.2 require?
At level AA, WCAG 2.2 requires at least 4.5:1 for normal text and at least 3:1 for large text, defined as 18 point or more, or 14 point bold or more. Interface components and meaningful graphics, such as input borders and icons, need at least 3:1 against adjacent colours. Level AAA raises text to 7:1 and large text to 4.5:1. Logos and inactive controls are exempt.
How big should buttons and touch targets be?
WCAG 2.2 level AA requires pointer targets of at least 24 by 24 CSS pixels, with exceptions for sufficiently spaced targets, inline links and a few other cases. For touch screens, aim higher: WCAG's AAA level asks for 44 by 44 CSS pixels, Apple lists 44 by 44 points as the default control size on iOS, and Google recommends 48 by 48 dp on Android.
What spacing scale should I use?
Use a scale based on 4 pixels, for example 4, 8, 12, 16, 24, 32, 48 and 64, and allow no other values. Use the small steps inside a group, such as a label and its field, and the large steps between groups. If you use a CSS framework, its built-in spacing scale is usually fine. The exact numbers matter less than using the same ones everywhere.
Should I redesign my UI or fix what I have?
Fix what you have unless the structure itself is wrong. Spacing, type, contrast, button styles, form errors and missing states can all be repaired screen by screen without a redesign. Consider a redesign when users cannot find core features, when the navigation no longer matches what the product does, or when the code makes every small change expensive.
How many users do I need to test with?
Five per round is enough to start. Jakob Nielsen's model estimates that five users uncover about 85 percent of usability problems, and he recommends spending a larger budget on several small rounds, with fixes in between, over one big study. If your product serves clearly different groups, such as buyers and administrators, test a few people from each.
Why does my UI look off even though nothing is broken?
Usually because of many small inconsistencies that add up: gaps that differ by a few pixels, elements that almost align, too many font sizes, several greys and buttons of different heights. No single one is noticeable, yet together they read as careless. Putting spacing, type and colour on fixed scales removes most of that impression without changing the layout.