I run a small link-in-bio SaaS. Like every other founder with a new domain and no authority, I went looking for the "100 free dofollow backlink sites" lists.
So I wrote a script and checked them. Twenty platforms, one at a time, on real published pages.
Exactly one of them gives a free user a followed, indexable link.
Not because the lists lie about rel. They're often right about rel. They're just measuring the wrong thing — and the way they're wrong is interesting enough to be worth writing down, because the same four failure modes explain almost every result.
The script
Nothing clever. Fetch a real published listing page, pull the robots meta, the canonical, and the rel of every outbound anchor:
#!/bin/bash
# gate.sh <url>
U="$1"
UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 \
(KHTML, like Gecko) Chrome/126.0 Safari/537.36"
curl -sSL -A "$UA" -o /tmp/body.html --max-time 25 "$U"
grep -io '<meta[^>]*name=["'"'"']robots["'"'"'][^>]*>' /tmp/body.html | head -3
grep -io '<link[^>]*rel=["'"'"']canonical["'"'"'][^>]*>' /tmp/body.html | head -2
perl -0777 -ne 'while(/<a\b([^>]*href=["\x27](https?:\/\/[^"\x27]+)["\x27][^>]*)>/gi){
$attr=$1; $href=$2;
$rel = ($attr=~/rel=["\x27]([^"\x27]*)["\x27]/i) ? $1 : "NO-REL(dofollow)";
print "$rel\t$href\n";
}' /tmp/body.html | sort -u
Run it against a competitor's listing, not your own — you want to see what the platform actually publishes, not what it promises.
Failure mode 1: the page is dofollow and noindex
The link is followed. The page it lives on is not in the index. Nothing flows.
Two of the most-recommended "free dofollow" platforms do this to free accounts specifically:
- A popular hosted-changelog product gives you a public changelog page with genuinely followed links. The free plan force-
noindexes that page. Indexing is a paid upgrade. - A large GIF platform's brand channels render the website field as
rel="noopener noreferrer"— followed. User channels staynoindexuntil the brand is verified.
Both were on every list I read. Neither list mentioned the robots meta. rel on a noindex page is worth nothing, and no rel checker will tell you that, because it isn't looking at the head.
Failure mode 2: the canonical points somewhere else
This one is nastier because the page passes both obvious checks.
One well-known developer-tools directory serves robots: index, follow on its tool pages, and the vendor link is rel="noopener noreferrer" — followed. Perfect, on the surface.
Every single tool page also serves:
<link rel="canonical" href="https://thatdirectory.example/"/>
Homepage. Site-wide. Your page tells Google "I am the homepage." A canonical is a strong hint, and while Google can reject it, you are betting your link on that rejection. I could not prove those pages get indexed independently, and I'm not going to claim they do.
Check the canonical. It takes one grep.
Failure mode 3: the dofollow you measured was a paid listing
This is the one that got me, and it's the reason I'm writing this.
I measured three launch platforms with the script. All three: followed vendor links, indexable pages. I wrote them up as "do this."
Then I actually submitted to one. The confirmation email listed "do-follow backlinks" as a benefit of the $49 tier.
Go back and look at the others with that in mind and the pattern is obvious:
- One directory's product links are
rel="nofollow noopener noreferrer", while the sponsor slots on the very same page arerel="noopener"— followed. Same HTML, same template, two different link policies, sorted by who paid. - Another platform's free tier requires a reciprocal badge on your own site. Not one of the five followed listings I sampled had that badge anywhere on their site — meaning those five almost certainly weren't free listings at all.
So there's a fourth gate, and it's the one nobody checks:
rel·robots· canonical · and which pricing tier was the page you measured published under?
A live page's rel is evidence about that listing. It is not evidence about yours. You often cannot know until your own page goes live — which means the honest answer for a queued free submission is "unproven," not "dofollow."
Failure mode 4: there is no link at all
Worth checking before you spend an hour on a submission form:
- A large software-comparison site:
index, follow, self-canonical, dedicated category pages, comparison pages — and zero outbound anchors to the vendor. The whole page is about the product and never links to it. - A startup directory whose homepage is full of followed outbound links (they're sponsor slots) while the permanent detail page for each listing links nowhere.
- An integrations marketplace with a page per app and no link to the app's own site.
And two that block it at a completely different layer:
- A PR-source platform's expert directory looked like a free profile with a website field. Its
robots.txt:
User-agent: *
Disallow: /profile/
Every profile URL is also signed with a token and redirects to the login page without one.
- The WordPress.org plugin directory. Everyone "knows" it's a high-authority free dofollow. Every vendor link on a plugin page is
rel="nofollow ugc". Writing a plugin can be great distribution. It is not a link.
The scoreboard
Twenty platforms where I could measure what a free account actually gets:
| Outcome | Count |
|---|---|
| Followed and indexable and actually free | 1 |
Followed but noindex on the free plan |
2 |
| Followed but canonicalized away | 1 |
| Followed only on paid listings (or unproven for free) | 3 |
nofollow |
5 |
| No outbound link at all | 5 |
Blocked by robots.txt / no crawlable page |
3 |
The one that passed everything was a plain software directory with a normal listing, no upsell attached to the link, and no reciprocal-badge condition. It is also, per Bing Webmaster Tools, the only legitimate referring domain my site has.
A mistake I made, so you don't
Seven platforms returned 403 or 429 to curl. Their block pages helpfully serve:
<meta name="robots" content="noindex, nofollow">
I nearly recorded that as the verdict. That's the block page's meta, not the real page's. I wrote one platform off as dead on a 429 — then opened it in a logged-in browser and found a live product with 606 open queries in it.
If a bot wall stops you, the honest status is "unmeasured." Open it in a real browser or leave the row blank.
What I'd actually do instead
The pattern across all twenty is consistent enough to be a rule: modern directories nofollow the free listing and sell the dofollow. That isn't a conspiracy, it's a business model, and it means grinding a list of 100 directories is a way to spend fifty hours building the exact footprint you'll later disavow.
For context on why that matters to me: my domain has ~103 referring domains and 104 entries on its disavow file. The list-driven approach is how you get there.
What's left, once you take the directories out, is unglamorous: write things worth citing, answer questions where you genuinely have first-hand data, and get covered by publications your audience actually reads. Editorial links carry no rel at all — I checked a national tech publication's articles while writing this, and every outbound link in the body was bare.
Slower. But there's no tier that takes it away from you.
I'm building Linkhiver, a link-in-bio tool localized in seven languages. The measurements above come from doing this badly for my own domain first.
Top comments (0)