← All posts
UI Prompting

Screenshot to Code: How to Turn Any UI Into a Working Prompt

March 14, 2026 · 7 min read · by Pedro

Screenshot-to-code prompting means extracting measurable UI specs from an image — colors, typography, spacing, borders, effects, interaction states, and animation — then writing those specs into a structured prompt so Claude or GPT-4 can recreate the UI accurately. Pasting a screenshot with only "build this" fails because the model still invents missing values for hover states, font weights, and spacing.

You see a UI on Dribbble, a competitor site, or X. You screenshot it and ask Claude or GPT-4 to "build this." What comes back is close but wrong: colors off, spacing different, hover states invented. The model can read the image; it still needs a spec.

What should you extract from a UI screenshot before prompting?

Before writing a screenshot-to-code prompt, extract seven layers of detail: colors (hex/rgba), typography (family, px size, weight, line-height), spacing (padding/margin in px), border and radius, effects (shadow, blur, gradients), interaction states (hover/focus/active/disabled), and animation timing. Without that list, the model fills gaps with guesses.

Colors

Every background, border, text, shadow, and gradient — as hex or rgba values. Use a color picker tool if needed.

Typography

Font family, size in px, weight (400/500/600/700/800), line-height, letter-spacing, and opacity for each text element.

Spacing

Padding and margin in px. If you cannot measure exactly, estimate based on the visible proportions.

Border & radius

Border width, color, and border-radius in px for every element.

Effects

Box-shadow layers, backdrop-filter blur values, opacity, and any gradients.

Interaction states

What changes on hover, focus, active, and disabled — even if the screenshot only shows the default state.

Animation

If anything moves or transitions, estimate the duration in ms and the easing curve.

How do you structure a screenshot-to-code prompt?

Structure a screenshot-to-code prompt as role + stack + labeled sections for layout, colors, typography, effects, and interactions, ending with hard constraints (single file, no external deps, production-ready). Use exact values — not "dark" or "subtle blur." Example template:

Act as a world-class frontend engineer. Recreate this UI exactly (React + Tailwind): LAYOUT — Container: max-width 380px, padding 24px — Border-radius: 20px COLORS — Background: rgba(12,12,18,0.92) — Border: 1px solid rgba(255,255,255,0.07) — Primary text: #ffffff, opacity 0.92 — Secondary text: rgba(255,255,255,0.45) TYPOGRAPHY — Title: 18px, weight 700, letter-spacing -0.03em — Subtitle: 13px, weight 400, line-height 1.6 EFFECTS — backdrop-filter: blur(32px) — box-shadow: 0 20px 60px rgba(0,0,0,0.5) INTERACTIONS — Card hover: border → rgba(255,255,255,0.14), transform translateY(-2px) — Button hover: opacity 0.85 — Transition: all 0.2s ease Single file. No external deps. Production-ready.

What do most people skip in screenshot prompts?

Most people skip interaction states. A screenshot shows the default look only — not hover, focus, active, or loading. If the prompt omits those states, the model invents them and they rarely match intent. For each interactive element, specify hover change, transition timing, and pressed/active appearance; three extra lines often prevent an hour of corrections.

How long does manual screenshot extraction take vs tknctrl?

Manual extraction from a UI screenshot usually takes 10–15 minutes. tknctrl does it in under 40 seconds: upload the screenshot, and it extracts colors, spacing, typography, effects, and interaction states, then writes a paste-ready prompt for Claude, GPT-4, Cursor, or v0.

Upload a screenshot. Get a production prompt.

tknctrl extracts every detail and writes the prompt for you.

Try it free →

Related

Better Cursor prompts

Cursor prompt template

Claude / v0 / Windsurf prompts