Here's a problem most bloggers discover too late.
You spend three hours writing a post on your own site. Then you cross-post it to Dev.to, Medium, and Hashnode to get reach. A week later you check Google Search Console and see something odd: your cross-posted versions are ranking. Your original isn't.
You've done what Google calls "duplicate content distribution" — and now the platforms you posted to own the SEO value for your own work.
Why this happens
When you publish the same article in multiple places, search engines have to decide which version is the "canonical" (authoritative) source. If you don't tell them, they guess.
The algorithm factors in: which version got indexed first, which has more inbound links, which has stronger domain authority.
Dev.to has domain authority you don't have on a new personal blog. Medium has been around since 2012. Hashnode is actively indexed. If you cross-post and don't set canonical URLs, you're in a fight you'll probably lose — even on content you wrote.
What a canonical URL actually does
The canonical URL tag tells search engines: "This page exists in multiple places, but this specific URL is the original source. Credit it there."
It looks like this in the HTML:
<link rel="canonical" href="https://yourblog.com/your-original-post" />
When Dev.to, Medium, Hashnode, or Ghost see a canonical tag pointing to your site, they pass the SEO value back to you. You get the reach benefits of those platforms without giving away the search ranking benefits.
This is how professional publishers cross-post. It's also how almost every content guide recommends doing it — and it's one of the most commonly skipped steps.
The manual approach breaks down fast
If you cross-post to one platform, setting the canonical URL manually is annoying but manageable. If you cross-post to five or more platforms, it becomes a checklist that fails.
Each platform has a different UI for canonical URLs:
- Dev.to buries it under "Advanced options" in the post editor
- Medium puts it in publication settings
- Hashnode has it in the article sidebar
- WordPress has an SEO plugin field
- Ghost uses a code injection section
Copy the URL, open each platform, find the field, paste, save. Repeat for every post, every platform.
Most bloggers skip it. We did too, until we built the tooling not to.
How we handle it in Blogboat
twRty Software Services built Blogboat as a multi-platform publishing studio. When you connect your platforms and publish from Blogboat, the canonical URL is set automatically on every platform — pointing back to wherever you designate as your primary source.
You write once. Blogboat publishes to 15+ platforms in one click. Every cross-posted version carries the canonical tag back to your original. You keep the distribution; you keep the SEO.
This isn't a complicated feature. It's one field, reliably set on every platform, every time. But that reliability is the thing that breaks down when you're doing it manually across a dozen destinations.
Who this matters for
If you publish only to Dev.to or only to Medium, this doesn't apply. You're single-platform.
If you're trying to build a following across multiple platforms and build organic search traffic back to your own site, canonical URLs are non-negotiable. Without them, you're choosing between reach and SEO with every post.
Blogboat is free to start if you want to try publishing with canonical URLs handled automatically.
- Web: twrty.org/blogboat
- iOS: App Store
- Android: Play Store
This post is from the team at twRty Software Services, makers of Blogboat.
Top comments (1)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.