Same HTML.
Native UMG.
Design game UI as HTML with Tailwind — by hand or with your coding agent — and import it as a plain Widget Blueprint. No web view, no JavaScript runtime, nothing of the plugin ships in your game.


An agent can run the whole thing.
Every artefact below is real output from the screen above — not a diagram of how it might work.
Start from a picture
A mockup goes in. The from-image and screen skills reconstruct it as HTML — screen takes it all the way to a finished widget in one call.

Plain markup comes out
Ordinary HTML and CSS a person can read and edit. No proprietary format, no lock-in — the design stays a web document.
<!-- orion_menu.html --> <div class="mission-copy column"> <p class="mission-label" data-loc="PrimaryMissionLabel"> PRIMARY MISSION </p> </div>
The import answers in JSON
Coded diagnostics and counts, so an agent can check its own work instead of asking a human whether it looks right.
// the ORION menu above, as imported "widgetName": "WBP_MainMenu", "status": "ok", "elements": 192, "widgets": 456, "maxDepth": 27, "warnings": 0, "errors": 0 HTML010 info Preview-only script skipped MAP003 info environment.png recorded
Measured, not eyeballed.
"Close enough" is not a specification. The render harness is gamma-correct and has a ground-truth window mode, so every number here is something you can reproduce.



What converts.
Layout
✓ NATIVEFlex and grid, absolute positioning mapped to canvas anchors, spacers where justify-content needs them.
Gradients
✓ NATIVELinear and radial, up to three stops, CSS corner rule — as native UI materials.
Fonts
✓ NATIVEResolved from font-family or @font-face into Font Face and composite Font assets. Metrics match.
Surfaces
✓ NATIVEBackgrounds, borders, radius, opacity, backdrop blur.
Controls
✓ NATIVEButtons with hover, pressed and disabled states. Progress bars. Form controls.
Images
✓ NATIVEImported as UI textures, with object-cover and object-contain via Scale Box.
Tailwind
✓ NATIVEv3 and v4 utilities and variants, expanded natively — no Node, no compiler, no network.
Text
✓ NATIVETypography, inline runs flattened predictably, String Table localization out of the box.
SVG
✓ NATIVEInline svg and img src="*.svg" rasterised to UI textures at 2x: paths, arcs, strokes, gradients, viewBox.
Stylesheets
✓ NATIVELocal link rel="stylesheet" files loaded in document order, with their @imports spliced in.
Transforms
✓ NATIVErotate, scale and px translate to the render transform; translate(-50%,-50%) to slot alignment.
Blur
✓ NATIVEbackdrop-filter: blur() becomes a native Background Blur with the same radius.
And what it refuses, on purpose
A converter that silently half-supports a feature is worse than one that tells you it will not touch it — every refusal here is a coded diagnostic, not a surprise at runtime. The full element-by-element list is in the support matrix.
Your Blueprint logic survives the redesign.
Widgets are matched by name and class and reused in place, so the Event Graph you wired last week still points at the same nodes after the designer moves a panel.
+ added Modal Border = kept HUD SizeBox = kept PlayerName TextBlock = kept HealthRow HorizontalBox ~ reclassed Icon Image -> Image - removed LegacyBadge TextBlock
// Generated. Do not edit: re-import instead. // Source: main_menu.html UPROPERTY(BlueprintReadOnly, meta = (BindWidget)) TObjectPtr<UTextBlock> PlayerName; UPROPERTY(BlueprintReadOnly, meta = (BindWidget)) TObjectPtr<USizeBox> DeployButton; /** Raised by DeployButton_Box (Button). */ UFUNCTION(BlueprintImplementableEvent, Category = "Web UI") void OnDeploy();
Studio-grade, or it does not ship.
Zero runtime
Both modules are editor-only. A cooked build contains no trace of the plugin — nothing to strip, nothing to license at runtime.
▸ absent from cooked buildsDeterministic
A manifest sits next to your HTML, diffable in code review. The same input produces the same widget, so a re-import is reviewable rather than mysterious.
▸ plan hash per importHeadless
A CLI and a commandlet with a JSON report and coded diagnostics. It belongs in CI as easily as in the editor.
▸ 21 automation contracts on UE 5.8Same plugin. Two licences.
Both tiers get the identical download: full source, the CLI, the demo content and the activation code for the agent skills. The tier is set by Fab's Standard License and depends on who is buying.
Personal
$12.99For individuals and small studios under Fab’s revenue threshold (US$100,000 gross in the last 12 months).
CHOOSE PERSONAL ON FAB ↗Professional
$19.99For studios and companies above that threshold. Same files, same updates, same usage rights.
CHOOSE PROFESSIONAL ON FAB ↗- Unreal Engine 5.8
- Editor on Windows — Mac and Linux builds to follow
- Python 3 for the headless CLI — standard library only, nothing to install
- Output runs wherever UMG runs, at no runtime cost
Does anything ship in my game?
No. The plugin is editor-only and absent from cooked builds.
Do I need Node or Tailwind installed?
No. Tailwind utilities are expanded natively inside the plugin.
Can I keep using the UMG designer?
Yes. Re-import reuses widgets by name, and tweaks on untouched properties survive.
Does it need JavaScript in my designs?
No. Behaviour is wired in C++ or Blueprint through the generated events.
Which agents work with it?
Any that runs a shell command and reads JSON — Claude Code, Codex, Cursor, OpenCode, Gemini CLI. Eight Agent Skills cover the loop (best-practices, design, from-image, screen, import, bind, reimport, diagnostics), served over MCP with a license key rather than shipped as files. Your activation code ships inside the download: paste it at mcp.digitalxbunker.com/activate and your key is issued instantly, with a ready-to-paste config for your tool. The importer itself needs no key and no network.
Can I see the source?
Yes. Full source ships with the plugin under the Fab EULA.
Get Web
to Widget.
Sold through Fab under the Fab Standard License; refunds are handled by Fab. Questions: digitalxbunker@gmail.com.