Building portfolios that don’t look AI-generated
The aesthetic defaults every code-gen tool reaches for, and the small set of decisions that pull a developer portfolio out of the templated middle of the road.
Most developer portfolios in 2026 look the same: dark background, purple-to-blue gradient hero, three identical feature cards, a marquee of skill logos, Inter font everywhere, and a closing CTA that says "Let's build something together". You can spot one from a thumbnail. They are not bad sites. They are invisible sites.
The reason they all look alike is that the LLMs we use to scaffold them have a strong aesthetic default, and most people accept it. Here is how I think about pushing past it.
Pick an accent that is not purple
The first move every code-gen tool makes is a purple-blue gradient hero. It is the AI-generated stock photo of CSS. Pick a single accent color and commit to it: burnt orange, deep emerald, rust, electric blue, anything that is not the default. Lock the color globally so the same hue shows up in your nav, your CTAs, and your link hovers. Consistency reads as taste.
On this site I use a single warm rust orange (#FF785A) for accents on a near-black background. Zero gradients. Every decision below was constrained by that pair.
Pick a typeface that is not Inter
Inter is fine. It is also on three quarters of the developer portfolios you will scroll past today. Pick something with a stronger identity: Geist, Satoshi, Cabinet Grotesk, Outfit, GT America. Pair it with a single display serif (sparingly) for your hero headline if you want editorial weight, or stay sans for a more engineered feel.
Pick two fonts maximum. Three is already a tell.
Skip the three-card feature row
The "three identical cards with an icon and a paragraph" layout survives because it is fast to generate. It is also instantly legible as AI scaffolding. Reach past it: zigzag image-and-text rows, a bento grid with asymmetric tiles, a single full-width project shot, a scrolling list with hairline dividers. Any of these reads as considered. The three-card row reads as a template.
Real images, not div screenshots
Building a fake product UI out of styled <div> rectangles to simulate a dashboard or terminal is the loudest tell. Use real screenshots of real things you shipped. If you do not have a screenshot, use real photography (Unsplash, your own camera). If you have nothing visual, do not pretend you do: write more, let the type breathe.
Cut the marketing voice
"Crafting elegant solutions for modern problems" is not your bio. It is the bio your AI assistant wrote because the prompt was vague. Say what you actually do, in the voice you would use if a friend asked what you were working on. Specific is better than poetic. "I build Next.js frontends for ecommerce teams" tells me more than "transforming digital experiences through code".
Test it on someone who is not you
Open the site on a friend's phone, in their browser, with their glasses on. Watch them scroll. The moment they slow down is the moment your design is working. The moments they speed past are the sections you would cut if you were being honest with yourself.
Portfolio sites are a market for taste, and taste is rare. The baseline is a free template the AI rewrote. Anything above the baseline shows up.