Timberdocs

Migrating

Migrate from WordPress

Timber includes a WordPress Migrator Wizard (padmin → Migrate from WordPress). Upload an export, show it your old site's look, review what it found, and import. Your live site never changes until you press Make live — the new design arrives as a private version.

What you need#

Everything is optional, but you need at least one thing.

You provideHow to get itTimber uses it for
Export file (.xml)In WordPress: Tools → Export → All content → Download Export FilePosts, pages, menus, image library, categories, excerpts, dates, featured images, Yoast / Rank Math titles & descriptions
Your site's addressJust type itReads the homepage and its stylesheets to find colours, fonts, logo, favicon and social links
Your theme (.zip)Zip the active theme folder from wp-content/themes/The theme's CSS, theme.json palette and fonts, and any self-hosted font files
A saved homepage (.html)Browser → File → Save Page As → "Webpage, HTML only"Same as the address, but offline
"Fetch from my live site"Tick the box (needs the address)Posts and pages through the public WordPress REST API, when you don't have an export file

More is better. The export brings your content; the address, theme zip or saved page bring your look.

The four steps#

  1. What you have. Upload your files and/or enter your address. Press Read my site.
  2. Analyze. Timber reads everything and writes nothing to your site yet.
  3. Review. See counts, warnings and the detected design — colours, fonts, corner radius, page width, logo — each editable, with a live preview. Choose what to import.
  4. Import & done. You get a report, a preview link, a Make it live button, and Undo.

What comes across#

WordPressIn Timber
PostsPosts, with category, excerpt, date, featured image and SEO title/description. Future-dated posts stay scheduled
Drafts / pending / privateSkipped, or imported as drafts if you tick Include drafts
PagesPages using the HTML editor, so markup isn't altered. Child pages become parent/child
MenusYour primary menu becomes the Header menu; a footer-style menu becomes Footer. Nesting is kept
Images and filesDownloaded into your media library; content re-pointed at the local copies
Old URLs301 redirects from the old permalinks to the new addresses
Gutenberg and classic contentBlock comments removed, paragraphs added, [caption], [gallery], [embed], [video] converted
Site title and taglineOptionally applied to Timber
Logo, favicon, social linksPicked up from your homepage
Fonts and coloursRebuilt as a new Timber theme (below)

What doesn't#

  • Plugin shortcodes (forms, sliders, popups…) are removed and listed in the report. Use Timber forms instead.
  • **<script> tags and inline event handlers** in imported content are removed for safety. Add trusted scripts back through Blocks.
  • Custom post types, comments and users aren't imported.
  • Page-builder layouts (Elementor, Divi, WPBakery) arrive as HTML and usually need tidying.

How the old look becomes a Timber theme#

Timber reads your stylesheets and works out:

TokenHow it's chosen
Background & textbody / :root rules, then variables named background, foreground, contrast…
AccentThe colour your buttons use, then link colour, then the most-used saturated colour
Second accentThe next most-used colour that's clearly a different hue
FontsThe first real family on body and on headings. Google Fonts URLs and @font-face names fill gaps. "System font" stacks mean keep the theme default
Corner radius & page widthThe most common values on buttons/cards and containers

It then forks a starter theme — Birch for light sites, Ebony for dark ones, or Ghost if you choose — appends a small block of design tokens, and creates a private version whose homepage shows your site title, tagline, hero image and latest posts. Because it's a normal theme, everything in Building themes applies: edit its CSS, fork it again, or restyle it from the Playground.

You choose how fonts load:

  • Use the font files from the theme — self-hosted, fastest, no third-party requests.
  • Load the same Google Fonts the old site used — contacts Google.
  • Don't load fonts — uses the font if the visitor has it, otherwise a system font.

Images take a few rounds#

Large libraries are downloaded in timed batches (so shared hosts don't time out). The done page shows Download the next batch until everything is in. Any image that fails keeps loading from your old site, so nothing breaks while you wait.

After the import#

  1. Preview the new version and click around.
  2. Check a few imported posts and pages.
  3. Set SEO → Site URL to the address the site will live at.
  4. Edit the new version's homepage in the Playground.
  5. Press Make live when you're happy. Redirects from your old URLs are already in place.

Safety#

  • Admin-only and CSRF-protected like every admin action.
  • Crawling refuses link-local addresses always, and private addresses unless Timber itself runs locally — so a hosted Timber can't be used to probe an internal network.
  • Downloads are type-checked, MIME-checked, size-capped; SVGs are scanned for scripts.
Timber is open source. Built by indies, for indies. © 2026