Gemini

Verified against Gemini · 2026-07-28

Turn a UI screenshot into working frontend code

A multimodal prompt that treats a screenshot as a literal spec — spacing, hierarchy, text, and visible states — and returns matching component code instead of a loose visual approximation shaped by the model's own design defaults.

Gemini (Gemini 3 Pro)Gemini app5 fillable variables

The prompt

Ready to copy — highlighted parts are example details you can swap.

Here's a screenshot of a pricing card component from a SaaS landing page. Build this as React with Tailwind CSS code.

Match, don't reinterpret:
1. Layout structure — what's in a row vs. stacked, alignment, relative spacing — as closely as the screenshot actually shows it, not the layout you'd typically expect for a component like this.
2. Every visible text label, exactly as written, including button text, placeholder text, and any small print — don't paraphrase a label into something that sounds cleaner.
3. Visible states — if a button looks disabled or active, a field looks focused, or there's a badge or count shown, include that state in the code. Don't drop it for being "just a detail"; a visible state in a screenshot is a spec for that state, not decoration.
4. Colors and type choices close to what's shown; use our existing shadcn/ui theme tokens tokens or variables if the screenshot maps onto one, otherwise use plain values and say explicitly that you did.

CONSTRAINTS
no external icon libraries, use inline SVG only; must be a single component file

Where the screenshot is ambiguous — a cut-off edge, an icon you're not fully sure of, a hover or focus state you can't see because it isn't visible in a static image — say plainly what's ambiguous and what assumption you made, instead of silently inventing a specific value and presenting it as if it came from the screenshot.

RESPONSIVE BEHAVIOR
A single screenshot only shows one viewport width. Build the component to behave reasonably at other sizes using ordinary responsive patterns, but say explicitly that you're extrapolating beyond what the screenshot actually shows for anything narrower or wider than the captured width — don't present a guessed mobile layout as if it were derived from evidence in the image.

ACCESSIBILITY BASICS
Even though a screenshot can't show what's in the accessibility tree, apply ordinary baseline practice regardless: real button/link elements instead of divs with click handlers, an alt attribute placeholder on any image, and a visible focus state even where the screenshot doesn't show one being triggered. Note this is a baseline addition, not something read directly off the image.

IF THE SCREENSHOT SHOWS AN INTERACTION MID-FLOW
If the screenshot appears to capture a transient state — a dropdown open, a toast notification visible, a modal mid-animation — build both the resting state and the captured state as two distinct states of the same component, rather than building only what's shown and leaving the resting state unaddressed.

NAMING AND FILE STRUCTURE
Name the component after what it is, not after the file it came from or a generic placeholder like Component1. If the screenshot clearly shows a piece of a larger page rather than a self-contained widget, say so, and note what surrounding layout context this piece would need once it's placed back into a real page rather than pretending it's fully self-sufficient in isolation.

OUTPUT
a single component file plus a one-line list of anything you were unsure about

Customize

Optional — swap in your own details for the highlighted parts above.

Why this works

Gemini's multimodal vision path reads the screenshot's actual pixel layout — spacing, alignment, proportional sizing — directly, rather than working from a text description of the design, which is what makes 'match, don't reinterpret' an enforceable instruction rather than wishful thinking; without it, the model tends to substitute its own aesthetic defaults for the ones actually shown, since a different spacing scale or a more common component pattern is simply more heavily represented in what it's seen during training than this one specific screenshot is. Explicitly requiring visible states — disabled, focused, badge counts — to be included counters the tendency to treat a screenshot as a static mockup of only the happy path and quietly drop states that would otherwise need separate design documentation to specify; a visible disabled button in the screenshot is direct evidence of a real state in the actual product, not an artifact of the capture. The ambiguity-flagging instruction targets cropped or unclear regions specifically — a cut-off icon or an edge that's out of frame gets filled with a plausible guess by default, and naming that guess as a guess is the difference between code you can trust and code you have to re-verify against the original design anyway before shipping it. Explicitly separating what the screenshot proves from what's a reasonable responsive extrapolation matters because a single image is direct evidence for exactly one viewport width — a model that builds a mobile layout without saying so invites the reader to assume that layout came from the same visual authority as the desktop version it was actually captured from, when it's really an assumption dressed identically to a verified fact. Requiring baseline accessibility practices regardless of what the screenshot shows corrects for the fact that a static image structurally cannot show semantic markup, focus order, or ARIA attributes at all — treating the image as the complete spec would silently drop these, not because they weren't needed, but because there was never a channel for a screenshot to communicate them in the first place, so they have to be supplied from ordinary practice rather than from the image.

What you get back

export function PricingCard() { return ( <div className="rounded-xl border p-6 shadow-sm"> <h3 className="text-lg font-semibold">Pro</h3> <p className="text-3xl font-bold mt-2">$29<span className="text-sm font-normal">/mo</span></p> <button className="mt-4 w-full rounded-md bg-black text-white py-2" disabled> Current plan </button> </div> ) } Unsure about: the small icon next to "Pro" was partially cut off at the top edge of the screenshot — used a generic badge placeholder instead of guessing which specific icon it was.

Verified against

Gemini Gemini 3 Pro · 2026-07-28

Changelog

  • 2026-07-28 Initial publish, verified against Gemini 3 Pro on a cropped pricing-card screenshot.

Need this built into your business?

If a prompt isn't enough — what Scult builds, built and maintained for you — that's Scult's day job.

EXPLORE WHAT SCULT BUILDS
Turn a stack of scattered documents into one sourced decision memoA long-context synthesis prompt that loads every related document into the same context window as one connected evidence base and returns a single decision memo with inline citations and flagged disagreements, instead of a chain of disconnected per-document summaries that lose the connections between them.Gemini (Gemini 3 Pro)Gemini app2026-07-20Diff a redlined contract against the original and flag every substantive changeA long-context prompt that loads both the original and the redlined version of a contract into the same window and returns a change-by-change risk analysis, instead of a generic first read that misses a clause quietly weakened somewhere the visible tracked-changes markup doesn't draw the eye.Gemini (Gemini 3 Pro)Gemini app2026-07-21Compare competing sources side by side without smoothing over where they disagreeA long-context prompt that loads several full reports, reviews, or papers at once and produces a structured comparison table instead of a blended, opinion-free summary that quietly hides where the sources actually disagree.Gemini (Gemini 3 Pro)Gemini app2026-07-22Turn an entire small-to-mid codebase into an onboarding doc a new engineer can trustA long-context prompt that reads a whole repository — every file pasted or uploaded, not a handful of representative snippets — and produces an onboarding document that names actual file paths and real architectural seams, instead of generic advice that could describe any Next.js or Python project.Gemini (Gemini 3 Pro)Gemini app2026-07-23
All Gemini prompts

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY