Cross-posting to Medium without hurting SEO: the import tool
Publish on your own site first, then use Medium's Import a story tool, which backdates the copy and sets a canonical link to your original.
LLaunchScaler·Published ·8 min read
To cross-post to Medium without hurting your own site's SEO, publish the article on your domain first, wait until Google has indexed it, then bring it into Medium with the Import a story tool. Medium's help center says the import "will automatically backdate the post to the original date, as well as add a canonical link" pointing at your original, which tells search engines your page is the source.
The order is the whole trick. Below are the exact steps, how to confirm the canonical is set on both ends, and what to know before you try to automate Medium posting.
What does Medium's Import a story tool do?
The import tool fetches a published web page, turns it into a Medium draft, backdates it to the original publication date and adds a canonical link to the source URL. You then edit the draft and publish it on your profile. Medium's help center says you may only import content "for which you have the right to do so."
The steps, from Medium's help center (desktop, checked in September 2026):
On your Medium homepage, click Stories in the left rail menu.
Click Import a story in the top-right corner.
Paste the URL of the published post and click Import.
Click See your story.
Edit the post, then click Publish to publish it on your profile.
The import only works on a URL that is live, so the original has to exist before the Medium copy does. That is the mechanism that puts your site first: Medium copies from your page and names your page as the canonical.
Read the draft before publishing. The import turns a web page into a story in Medium's editor, so check that headings, links, images and embeds came across as you expect; fixing them is easier before the story goes live than after. If the tool cannot import a page at all, Medium's help says you may need to move the content across manually, in which case you set the canonical yourself, as described below.
Why should you publish on your own domain first?
Search engines see the Medium copy and your original as duplicates and index one of them as the canonical version. A canonical link on the Medium copy, pointing at your page, asks Google to treat your page as the source. Publishing yours first also gives Google your version to crawl and index before the copy exists.
Questions, answered
What people ask about this
01
How do I import a story to Medium?
On your Medium homepage, click Stories in the left rail, click Import a story in the top-right corner, paste the URL of the published post and click Import. Then click See your story, edit it, and click Publish.
Google's documentation lists the ways to state a canonical preference, in order of strength: redirects ("a strong signal"), rel="canonical" link annotations ("a strong signal"), and sitemap inclusion ("a weak signal"). A redirect is impossible across two different sites you don't both control, so the rel="canonical" link that Medium adds is the strongest signal available for a cross-post. Google treats it as a signal, not an instruction, and can still choose a different URL.
Medium's own help page gives the reasoning in plain terms: canonical links let search engines "determine and prioritize the ultimate source of content," and it warns that sites publishing "an overabundance of duplicate content without indicating a canonical link may be penalized in search engine rankings."
A practical sequence that respects all of this:
Publish the article on your site and add it to your sitemap.
Link to it from at least one page Google already indexes, such as your blog index.
Open Search Console's URL Inspection tool on the new URL and wait for "URL is on Google".
Only then import it to Medium.
Waiting for indexing is a judgement call rather than a Google rule, but it removes the case where Google meets the Medium copy before it has ever seen yours.
How do you check the canonical link on the Medium copy?
Check it twice: in the story's settings, and in the published page's source. In settings, open the story in edit mode, click the three-dot button, choose More settings and scroll to Advanced Settings. That option, "This story was originally published elsewhere", is where a story's canonical link lives, so an imported story should show your original URL there. In the page source, search for canonical.
Medium's help center describes the source check directly: after publishing, right-click the page, choose "View page source", search for "canonical", and "the first result will show the link you imported from." You are looking for a tag of this form, with your URL, not the Medium URL:
The story was pasted in, not imported, and no canonical was set
Set it manually in Advanced Settings
The canonical points at a staging or http:// URL
You imported from the wrong address
Change it to the live https:// URL and republish
The canonical points at a URL that redirects
You imported an old address
Point it at the final URL, not the redirecting one
On your own site, check the other half. Your original page should carry a self-referencing canonical, meaning a rel="canonical" that names its own URL. If it names nothing, or names a different page, the Medium copy is pointing at a page that does not claim to be the source. The guide to canonical tag mistakes covers the errors that cause that.
How do you set a Medium canonical link manually?
When you write or paste a story into Medium instead of importing it, add the canonical yourself before publishing. Medium's help center says only the story's author can set it, from Advanced Settings in the story's More settings page, using the option "This story was originally published elsewhere".
The path, from Medium's help center:
Enter edit mode, either by starting a new draft or by opening your story, clicking the three-dot button in the top-right corner and choosing Edit story.
In edit mode, click the three-dot button in the top-right corner.
Click More settings.
Scroll to Advanced Settings and select "This story was originally published elsewhere".
Enter the original URL and click Save canonical link.
Click Publish so the change goes live.
Use this route when the import tool fails on your page, or when you want to rewrite the Medium version heavily. If the Medium story ends up substantially different from your original, think about whether it is still a copy at all. Two genuinely different articles on the same topic do not need a canonical between them.
Can you automate cross-posting to Medium through its API?
For a new integration, no. Medium's help center says it "will not be issuing any new integration tokens for our API and will not allow any new integrations," while "all existing tokens will continue to work." Medium's API documentation on GitHub now opens with a warning that "the Medium API is no longer supported."
Route
Available to a new account?
Sets a canonical
Source
Import a story (web)
Yes
Yes, automatically
Medium Help Center
Manual paste, then Advanced Settings
Yes
Yes, if you set it
Medium Help Center
API with an existing integration token
Only if you already hold a token
Yes, through the canonicalUrl field
Medium API docs on GitHub
API with a new integration token
No, no new tokens are issued
Not applicable
Medium Help Center
If you already hold a token, the documented create-post call accepts contentFormat (html or markdown), a canonicalUrl described as "the original home of this content, if it was originally published elsewhere," and a publishStatus of public, draft or unlisted, where the default is public. Send draft so a person reviews the story in Medium before it goes out, and always send canonicalUrl. Given the "no longer supported" notice, check the current state of both pages before building anything that depends on the API.
For everyone else, the import tool is the reliable path, and it takes a minute per post. Pushing articles to your own site automatically is the part worth automating; the signed webhook guide shows a receiver that creates posts in any CMS, so each article exists at its canonical home before you import it anywhere.
What should you check before and after every cross-post?
Run this list each time, because a cross-post that goes wrong once can compete with your own page for its query:
The original is live on your domain, over HTTPS, at its final URL.
The original carries a self-referencing canonical.
URL Inspection shows the original as "URL is on Google".
You imported from the final URL, not a redirect or a preview link.
The Medium draft shows your URL under "This story was originally published elsewhere".
After publishing, the Medium page source's rel="canonical" names your URL.
A few weeks later, URL Inspection on your original shows your own URL as the Google-selected canonical.
The last check is the one that proves it worked. Google's URL Inspection help says the Google-selected canonical can only be read from the indexed result, not from a live test. If it names the Medium URL, strengthen the original: link to it from more of your own pages and make sure it offers something the Medium copy lacks. The same thinking applies to other hosted platforms; the Notion blog SEO guide covers what you can and cannot control when the host renders the page.
Keep your own site as the source, every day
Cross-posting works best when there is a steady supply of original articles on your own domain to import. LaunchScaler's content engine plans a month of articles from your own Search Console queries, writes one a day (thirty a month) from what your product does, in your voice, and puts every draft in your workspace to rewrite, trim or scrap. By default, every draft waits for your review before it publishes. Medium is one of its destinations, alongside WordPress, Webflow, Ghost, Shopify, Notion and a signed webhook.
It costs $99/mo per website, with 3 days free before the first charge. Start the engine and your first draft is ready on day one.
Yes. Medium's help center says imported stories automatically get a canonical URL referencing the original source, and the import also backdates the story to the original publication date.
03
Does cross-posting to Medium hurt SEO?
Not when the Medium copy carries a canonical link to your original and your original was published first. A canonical link is a strong signal to Google, though not a command, so check which URL Google selected in Search Console's URL Inspection tool.
04
Can I still get a Medium API integration token?
No. Medium's help center says it will not issue new integration tokens or allow new integrations, while existing tokens keep working. Its API documentation on GitHub says the API is no longer supported.
05
How do I add a canonical link to a Medium story manually?
Open the story in edit mode, click the three-dot button, choose More settings, scroll to Advanced Settings, select This story was originally published elsewhere, enter your URL and click Save canonical link, then Publish.
Any Notion plan can make a Site indexable, but titles, descriptions and custom domains need a paid plan, and no schema or robots.txt setting is documented.
Programmatic SEO builds many pages from one dataset; editorial answers one question per page. Start editorial, and add programmatic where you own data.