Import wiremd markdown mockups as fully editable Figma designs with native components, auto-layout, and professional styling.
✨ Native Figma Elements - Creates real Figma frames, text nodes, and components (not just images) 🎨 Multiple Themes - Sketch (hand-drawn), Clean (modern), Wireframe (grayscale), or Minimal 📐 Auto-Layout - Responsive designs with proper constraints and spacing 🔧 Fully Editable - Every element can be customized after import ⚡ Fast - Imports complete mockups in seconds
- Containers (hero, card, modal, alert, section)
- Navigation bars
- Grid layouts (2, 3, 4+ columns)
- Brand headers
- Buttons (primary, secondary, danger variants)
- Text inputs
- Textareas
- Select dropdowns
- Checkboxes
- Radio buttons and groups
- Headings (H1-H6)
- Paragraphs
- Images (as placeholders)
- Icons (Unicode symbols)
- Links
- Lists (ordered/unordered)
- Tables
- Blockquotes
- Code blocks
- Open Figma
- Go to Plugins → Browse plugins in Community
- Search for "wiremd Importer"
- Click "Install"
- Clone this repository
- In Figma: Menu → Plugins → Development → Import plugin from manifest
- Select the
manifest.jsonfile fromfigma-plugin/directory - Plugin will appear in Plugins → Development → wiremd Importer
Use the wiremd CLI to convert your markdown mockup to JSON:
mdmock your-mockup.md --format json -o mockup.jsonExample markdown:
[[ Logo | Home | Products | About | [Sign In] ]]
::: hero
# Welcome to Our Product
Transform your workflow with powerful tools
[Get Started] [Learn More]{.outline}
:::
::: grid-3 card
### Fast Performance
Lightning-quick load times
### Secure
Enterprise-grade security
### Scalable
Grows with your needs
:::- Open Figma
- Menu → Plugins → wiremd Importer
- Select your preferred visual theme:
- Sketch - Balsamiq-style hand-drawn look
- Clean - Modern minimal design
- Wireframe - Traditional grayscale
- Minimal - Unstyled for custom CSS
- Copy the contents of
mockup.json - Paste into the text area
- Click "Import to Figma"
- Your design appears as a new page with editable components!
- Hand-drawn, Balsamiq-inspired aesthetic
- Chalkboard font (or Comic Sans fallback)
- Rotated elements with shadows
- Perfect for brainstorming and early concepts
- Modern, polished design
- Inter font family
- Smooth rounded corners
- Professional drop shadows
- Great for client presentations
- Traditional grayscale
- Helvetica font
- Sharp corners, minimal styling
- Ideal for technical specifications
- Bare-bones semantic HTML
- Basic borders and spacing
- Perfect starting point for custom styling
Cmd/Ctrl + Enter- Import (when textarea is focused)
The plugin uses Figma's auto-layout extensively. Imported designs will:
- Resize automatically when content changes
- Maintain proper spacing between elements
- Support responsive design patterns
All elements are fully editable:
- Text: Double-click any text to edit
- Colors: Select element and change fill/stroke
- Spacing: Adjust padding and gaps in auto-layout properties
- Layout: Drag elements to reorder
Convert repeated elements to components:
- Select an imported button or card
- Create Component (Cmd/Ctrl + Alt + K)
- Reuse across your design
Imported grids use horizontal frames with columns:
- Adjust
itemSpacingto change gaps - Resize columns independently
- Add/remove columns as needed
- Ensure you're using
--format jsonflag with mdmock CLI - Validate JSON syntax (use jsonlint.com)
- Check that root object has
"type": "document"
The plugin will attempt to load these fonts in order:
- Theme-specific fonts (Chalkboard, Inter, Helvetica)
- Roboto (fallback)
If fonts are missing, install them from Google Fonts or use a different theme.
For very large mockups (100+ components):
- Consider breaking into multiple pages
- Import will show progress indicator
- Plugin won't freeze, but may take 10-30 seconds
- Check that your wiremd markdown uses correct syntax
- Try different theme to see if it's theme-specific
- Verify JSON structure matches wiremd spec
cd figma-plugin
npm install
npm run buildnpm run watchThen in Figma:
- Plugins → Development → Import plugin from manifest
- Select
manifest.json - Plugin updates automatically on file changes
figma-plugin/
├── src/
│ ├── code.ts # Main plugin logic
│ ├── ui.html # Plugin UI
│ └── lib/
│ ├── ast-to-figma.ts # Core converter
│ ├── types.ts # TypeScript types
│ ├── style-mapper.ts # Theme styling
│ ├── form-components.ts # Form converters
│ └── content-components.ts # Content converters
├── dist/ # Compiled output
├── manifest.json # Figma plugin manifest
├── package.json
└── tsconfig.json
Test with example wiremd files:
# In wiremd root directory
cd examples
mdmock navigation.md --format json -o nav.json
mdmock form.md --format json -o form.json
mdmock landing-page.md --format json -o landing.jsonThen import each JSON file through the plugin.
Contributions welcome! Please:
- Fork the repository
- Create a feature branch
- Add tests for new functionality
- Submit a pull request
See CONTRIBUTING.md for guidelines.
MIT License - see LICENSE for details.
- Bi-directional sync (Figma → wiremd)
- Component variants support
- Custom color themes
- Image loading from URLs
- Style export (Figma styles → wiremd)
- Batch import (multiple files)
- Live preview mode
- Plugin settings/preferences
- Export to wiremd from Figma
- Template library
Built with ❤️ by the wiremd team
- Uses Figma Plugin API
- Inspired by html.to.design and other design tools
- Special thanks to the Figma developer community
Made with wiremd - Text-first UI design for developers