How to Improve Your UI Without a Designer

Six fundamentals, ordered by impact, each fixed by copying real production apps.

Last updated

You can improve your UI without hiring a designer by working through six fundamentals in order of impact: typography, spacing, color, interactive states, empty and error states, and information density. Fix each one by copying how real production apps handle it rather than guessing.

Start with typography — the biggest win

Type is the highest-leverage thing you can change, because it appears on every screen you will ever ship. Fix it once and the whole product reads as more considered before you have touched a single color. The good news is that most of the work is subtraction: one typeface family is almost always enough. A single well-made font, used with intent, looks far more professional than two or three thrown together because a template happened to pair them.

Stop picking sizes by eye. Choose a modular scale — a ratio like 1.2 for calm, editorial interfaces or 1.33 for punchier, more dramatic hierarchy — and let it generate your sizes for you. You set a base body size, and each step up or down multiplies by the ratio. Every heading, label, and caption then comes from the same source, so nothing looks slightly off, and you never again have to argue with yourself about whether a title should be 22 or 24 pixels.

Cap your weights at two or three: a regular for body text, something heavier for headings, and at most one in between. More than that and the page starts to feel noisy without anyone being able to say why. Give body text room to breathe with a line-height around 1.5 to 1.7, and pull headings tighter — dense lines of large type look cramped at the same spacing that reads comfortably at body size.

Use a spacing system

Inconsistent spacing is the single most reliable tell of an interface no designer touched. The individual gaps are never wrong enough to notice on their own; it is the accumulation — 13 pixels here, 15 there, 18 somewhere else — that makes a screen feel restless and unfinished. The fix costs nothing but discipline. Pick a base unit, either 4 or 8 pixels, and allow only multiples of it anywhere spacing appears.

Once you are on a system, spacing becomes a tool for meaning rather than a chore. Distance is how a UI communicates grouping: things that belong together sit close, things that do not sit farther apart. A label hugs the field it describes; that field keeps its distance from the next section. Readers parse the structure without reading a word, purely from the rhythm of the gaps.

One rule resolves most of the hard cases: padding inside a component should be smaller than the margin between components. When the space around a card is tighter than the space within it, the card stops feeling like a contained unit and starts bleeding into its neighbors. Keep the inside snug and the outside generous, apply your unit consistently, and a surprising amount of visual polish arrives for free.

Restrain your color palette

Amateur interfaces use too many colors doing too little; professional ones use very few, each with a clear job. The shift in mindset is to stop thinking in colors and start thinking in roles. You need a background, a surface that sits on top of it, a border, a primary text color, a secondary text color for supporting detail, one accent, and one danger color for destructive or error states. That is the whole palette for most products.

Notice how much of that list is neutral. Grays do the overwhelming majority of the work in interfaces that look expensive — they carry the text, the surfaces, and the dividers, and they let the single accent actually mean something when it appears. If you spend your accent on every heading, icon, and border, it stops signaling anything; reserve it for the action you want people to take, and it starts pulling the eye exactly where you want it.

When you audit an existing screen, look for colors doing the same job twice — two blues that are almost but not quite the same, three shades of gray for borders where one would do. Every time you find a duplicate, delete one. A palette gets stronger as it gets smaller, and the constraint of a handful of defined roles is what keeps a self-built UI from looking like it was colored in one element at a time.

Design the states you forgot

Most self-built interfaces are designed for exactly one moment: full of data, everything working, the mouse nowhere in particular. Real usage is messier, and the states you skipped are where the amateur feel leaks through. Every interactive element needs a hover, a focus ring, an active press, and a disabled treatment — and focus especially is not optional, both because keyboard users depend on it and because its absence makes an app feel inert.

Then there are the states that only appear when something is missing. The empty state is the first thing a new user sees, before they have created anything, so a blank panel is a wasted first impression. Design it like a feature: say what goes here, why it matters, and give a clear action to fill it. While data loads, reach for skeleton placeholders shaped like the content instead of a spinner — they make the wait feel shorter because the layout is already there when the data lands.

The error state is the one that undoes everything else. You can nail typography, spacing, and color, and a raw stack trace or a dead-end screen when a request fails still tells the user no one thought this through. Handle failure explicitly: say what went wrong in plain language, and offer the way out — retry, go back, contact support. Polished error handling is invisible when things work and decisive when they do not.

Get information density right

Density is a deliberate choice, not something that happens to you. Consumer apps breathe — large touch targets, generous whitespace, one primary thing per screen — because their users are casual and the emotional register is calm. Professional tools pack information tight — smaller rows, more columns, denser tables — because their users are experts who want to see a lot at once and would resent scrolling through air to find it. Before you tune anything, decide honestly which kind of product you are building.

Once you know, density comes down to three dials: row height, font size, and the gaps between things. A dense data table might use a compact row height and a slightly smaller font so more fits above the fold; a marketing surface or a settings page can afford to open everything up. Neither is more correct in the abstract — correctness is a match between the density and who is using the screen and why.

The mistake to avoid is mixing densities on a single screen without a reason. When one region is airy and the region beside it is cramped, the page feels like two products stitched together. Keep the density consistent within a view, change it only across genuinely different contexts, and the interface reads as one coherent thing designed by one hand.

Check your work against real apps

Here is the move that carries a non-designer furthest: stop designing from imagination and start designing from reference. When you are unsure how big a heading should be or how much padding a card wants, you are not really lacking talent — you are lacking a known-good answer to compare against. Shipped products are full of those answers, refined against real users over many revisions, and they are yours to study.

Run the comparison loop. Find three or four production apps in your category. Put the same screen type — the settings page, the empty state, the pricing table — next to yours and look for the differences. Then fix the biggest gap first, and repeat. The gaps in spacing, hierarchy, and state handling that are invisible when you stare at your own work alone become obvious the instant a professional version sits beside it.

This is where dezzayn helps: 280,000+ real screens from 1,100+ production apps, organized by category, so you can pull up how established products actually solved the screen in front of you instead of describing it to yourself from memory. Start with the examples below, then browse the category your app lives in and build your own reference set.

See how production apps handle hierarchy, spacing, and states — browse their full flows:

Salesforce app UI
Salesforce
Shopify app UI
Shopify
Slack app UI
Slack
Binance app UI
Binance

Frequently asked questions

What's the fastest way to make my UI look better?
Typography. Set a consistent type scale, limit yourself to two or three font weights, and increase the contrast between heading and body sizes. It touches every screen at once, which is why it beats any other single fix.
How do I improve my app's design if I can't afford a designer?
Work through the fundamentals in order of impact — typography, spacing, color, interactive states, density — and for each one, copy how a real production app in your category handles it instead of guessing. Reference libraries like dezzayn exist exactly for this.
What UI mistakes make an app look amateur?
Inconsistent spacing, too many colors doing too little, missing hover and focus states, unstyled empty and error states, and default-size text everywhere. None of them require talent to fix — each is a system you apply once and keep consistent.
How do I know if my UI is actually good?
Put it next to shipped products. Open three or four production apps in your category, compare the same screen type side by side, and note where yours differs. Gaps in spacing, hierarchy, and states become obvious in comparison even to a non-designer.

Browse 280,000+ real app screens