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 1

Step 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.

  1. Write each problem as an observation, for example: three of five people did not find the export button.
  2. Rank by how many people hit the problem and how badly it blocked them.
  3. 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.

StepValueTypical use
Tight4 pxIcon to its label, label to helper text
Close8 pxLabel to field, title to subtitle
Default16 pxPadding inside cards, gap between form fields
Loose24 pxGap between cards, padding of larger panels
Section32 to 48 pxBetween groups of content on a page
Page64 px and upBetween 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).

ComponentDecide once
ButtonThree variants (primary, secondary, text), two sizes, one corner radius, and states for hover, focus, disabled and loading
Text inputOne height, one border colour, one focus style, and where the label and the error message go
Card or panelOne padding value, one radius, and either a border or a shadow, not both
Dialog and toastOne width, one position, one way to close
IconsOne icon family, one stroke weight, two sizes
TokensColours, 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.

StateWhat to showCommon mistake
Empty, first useOne sentence on what belongs here and a button that creates the first itemA blank table with column headers
Empty, no resultsThe search term, a hint to widen it and a way to clear filtersThe words No results and nothing else
LoadingNothing for very short waits, then a skeleton or spinner, and a progress bar for long onesA spinner that never ends, with no way to cancel
ErrorWhat failed, whether the person's data is safe, and a retry buttonA raw error code or a blank screen
SuccessA short confirmation near the action, with the changed item visibleNo feedback, so people click again
Partial or offlineWhat still works and what will sync laterTreating 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.

FixRough effortWhy it comes first
Raise text contrast to 4.5:1One or two hoursMeasurable, and it touches every screen at once
Snap all spacing to the scaleHalf a dayRemoves most of the unfinished look
One primary button per screenOne or two hoursPeople stop asking what to do next
Cap body text at about 70 characters per lineMinutesLong text becomes readable on wide screens
Rewrite the five most common error messagesAn hourFewer 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

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.