Docs to Blocks · by J6 Venture

From document editor to blog post, in seconds.

Docs to Blocks turns a finished Google Docs or Word draft into a ready-to-publish WordPress post in seconds. No reformatting, no rebuilt tables, no lost alt text. You review the preview and hit publish.

Keeps alt text from .docx uploads Reads Google Docs links or .docx
Free forever. No account, no API key, no telemetry, and it runs entirely on your own server.
The problem

The slow part is everything after the paste.

You already did the hard part in Google Docs or Word. Then the paste undoes it. Most importers do not save you the rework: they either drop the whole document in as one Classic block you still have to rebuild, or they bring the text across but lose your tables, images and colour styling. Either way you are back to formatting by hand, element by element. Here is the split.

What you still do by hand
  • Rebuild every heading and list after the paste.
  • Re-create tables the importer flattened or dropped.
  • Re-upload images and re-add their alt text.
  • Re-apply your colours, boxed passages and header rows.
What Docs to Blocks does for you
  • Every heading, list and table, as native blocks.
  • Tables kept whole, with a real header row.
  • Images uploaded to your library, with alt text.
  • Your theme's colours applied, boxed passages and all.
The preview is the product

Nothing is created until you say so.

Before anything is created on your site, Docs to Blocks shows you the whole post, the same one at the top of this page: how many blocks it became, the heading outline, the images it will upload and every field it filled in. If the conversion is wrong, it costs you a click, not a junk draft and a pile of orphaned attachments. Here is what comes across.

Decide before you commit

Set the whole post on one screen.

Title, post type, status and author, all chosen before the draft exists. Pull the title from a heading or from your brief table, publish it or keep it private, and assign the right author, without opening the editor first.

  • Title from a heading or your brief table
  • A post, or any custom post type
  • Draft, private or published
  • Author picked from your users
Title and destination
Post title
How AI Use Cases in Investment Management Fail
Take the title from
Brief table · row 1
Create as
Post
Status
Draft
Author
Vikas
Read straight off your brief table

Every field, filled in for you.

Put a table at the top of your document with the slug, meta description, focus keyword, categories and tags. Docs to Blocks reads them straight off it, fills in every field, and leaves that table out of the published post. If you write to a brief, this is the part that saves the most clicks.

Search appearance and filing
How it will be found
URL slug
how-ai-use-cases-fail
Meta description
A clear look at which investment-management SEO tactics move the needle, and which just feel productive.
Focus keyword
investment management SEO
Where it belongs
Categories
Tags
answer engine optimisationAI overviewsschema markup
Read from the brief table. New tags are created as needed.
Slug, meta description, focus keyword, categories and tags, read from the brief table. The table itself is not published.
Accessibility

Alt text survives the trip.

Upload a .docx and the alt text on every image is carried into your media library and written to the attachment, where your theme and SEO plugins read it. The preview audits every image, so you can see what has alt text before you publish.

One honest caveat

A Google Docs link cannot carry alt text, because Google does not include it in any export. Upload the .docx to keep it. The plugin says so on screen, and so do we.

Image alt text2 of 2 have alt
chart-citations.png
Share of AI citations by source type, 2026
Alt kept
crawl-ratio.png
Crawl-to-referral ratio by AI company
Alt kept
Every image is written to your media library with its alt text on the attachment.
The preview audits every image, so you see what carries alt text before you publish.
It looks like your site

Your style, your colours, your way.

Imported posts look like they were built in your theme, because they were. Boxed passages and table headers pick up your theme's own colour names, so a later restyle carries them with it. Want exact brand colours instead? Save your own and they are written into the post as real values that stay put. Your call, per element.

How it will look
Boxed passage background
Base Contrast Accent 5 Accent 1 Accent 3
Stored by your theme's colour name, so a restyle carries through.
Your own colours
Brand purpleReport sand
Does schema markup get you cited by AI search?
No measurable effect on citation rate. It still earns classic rich results, which is reason enough to keep it.
Boxed passages and table headers, styled by your theme's own colour names.
After the import

See what it saved you.

Every import is logged with an estimate of the hand-editing it replaced, so you can show where the hour went. The Imported tab keeps the running total and links straight to each post it created.

Editing time saved
5h 58m
estimated, workings shown
Documents
14
imported to date
Blocks
912
all native, none Classic
Images
26
into your media library
Your imported documents
PostImportedWhat came acrossSaved
When Strategic Asset Allocation Beats Tactical Shifts
Draft
2 hours ago19 headings, 3 tables, 2 lists17 minOpenPreview
How AI Overviews Choose Which Pages to Cite
Published
15 min ago12 headings, 4 images, 1 table16 minOpenPreview
Quarterly Content Report
Pending review
2 days ago6 headings, 2 images, 2 lists8 minOpenPreview
The Imported tab. Every document, what came across, and a link straight to the post.
How the estimate works

An estimate, with its workings shown.

The time figure is an estimate from a simple per-element model, not a stopwatch. So the plugin shows you the exact rates it used: seconds to split a paste into a real block, per table row, per image. You can check the maths, and none of it is hidden.

How the estimate is worked out
  • 6 secto split a paste into a real block and set its type
  • 20 secmore per list, because nesting rarely survives a paste
  • 30 secper table row, rebuilt cell by cell
  • 100 secper image: save, upload, name, add alt, place
  • 45 secto retype slug, meta, keyword, categories and tags
Change these rates with the dtb_time_estimates filter. Nothing is sent anywhere; the count lives in your own database.
Every rate the estimate used, in seconds, shown on every import.
Two ways in

A link, or the file itself.

Paste a Google Docs share link and it pulls the document to your server, or upload a .docx exported from Docs, Word, Pages or LibreOffice. Upload is the better path when images matter, because that is the only way alt text comes across.

  • A Google Docs link set to "anyone with the link"
  • Or a .docx from Docs, Word, Pages or LibreOffice
  • Google redirect wrappers stripped from links
Option one
Paste a Google Docs link
Shared as "anyone with the link". Pulled straight to your server.
https://docs.google.com/document/d/…
Preview this document
Option two
Upload a .docx
From Docs, Word, Pages or LibreOffice. Keeps image alt text.
Choose file · no file selected
Preview this document
Free, and checkable

Free, in a way you can check.

No account to create, no API key to paste, no paid tier holding the good parts hostage, and no telemetry. The only outbound request the plugin ever makes is fetching the document you asked for, from Google, to your own server.

No account
Install and use it. Nothing to sign up for.
No API key
No third-party service to connect or pay for.
No paid tier
The good parts are not held back for an upgrade.
No telemetry
Nothing about your site is ever sent anywhere.
296 automated tests. It never produces a Classic block, and there is a test that asserts exactly that.
↓  Download for free Nothing is written to your site until you click create.
Install in a minute

From nothing to your first import, in three steps.

  1. Install and activate
    Add it from the WordPress plugin directory once live, or upload the zip under Plugins, Add New, Upload. No account, no key.
  2. Open Docs to Blocks and bring a doc in
    Paste a Google Docs share link, or upload a .docx from Docs, Word, Pages or LibreOffice.
  3. Review the preview and publish
    Check the blocks, outline, images and fields, then create the post. Nothing is written to your site until you do.
Works on any WordPress with the block editor. Self-hosted, with no external services to connect.
Questions

The answers you want before you install.

Is it really free? What is the catch? +

It is free, and free in a way you can check. No account, no API key, no paid tier with the good parts held back, no upsell notices, and no telemetry. The only outbound request it ever makes is fetching the document you asked for, from Google, to your own server. It is self-hosted, so nothing runs through us.

Will it change my site before I confirm? +

No. Nothing is written to your site until you click create. The preview shows you the whole post first, so if the conversion is wrong it costs a click, not a junk draft and a pile of orphaned attachments.

Does it keep image alt text? +

Yes, when you upload a .docx. The alt text on every image is written to the media library attachment, where your theme and SEO plugins read it. From a Google Docs link it does not come across, because Google does not include alt text in any export format. If images matter, upload the file.

Does it work with Google Docs links? +

Yes. Paste a share link set to "anyone with the link" and the plugin pulls the document straight to your own server. Google's google.com/url?q= redirect wrappers are stripped from your links along the way. Upload is still the better path when you need alt text.

How do I install it? +

Once it is on WordPress.org, install it from your dashboard under Plugins, Add New, then search for Docs to Blocks. Or upload the zip under Plugins, Add New, Upload. Activate it and open Docs to Blocks in the admin menu. No account or key to set up.

Will I ever get a Classic block? +

No. It never produces core/freeform, and there is an automated test asserting exactly that. You get native blocks: headings, lists with nested list items, real tables with a header row, and images backed by real attachments.

Does it use AI? +

No. Nothing in it is AI. It reads the structure of your document and maps each element to the matching block, the same way every time. That is also why it has no API key and makes no outbound request beyond fetching your document.

Is the "time saved" number real? +

It is an estimate from a per-element model, not a stopwatch. The plugin shows you the exact rates it used, in seconds per block, per table row and per image, so you can check the maths yourself.

Skip the reformatting. Just publish.

Write it in Google Docs. Publish it in WordPress. Let Docs to Blocks do the formatting in between. Free, self-hosted, and yours to check.

↓ Download for free See what the preview shows you →

Nothing is written to your site until you click create. No account, no API key, no telemetry.

See case studies Book Strategy Session →