From 477 Broken Links to Zero, Without Writing a Single New Word

Maraña de cables rojos brillantes que se vuelve líneas turquesa rectas y ordenadas sobre fondo azul oscuro

Comparte este artículo

A site with nearly two thousand posts accumulates broken links the way a drawer accumulates cables: without anyone deciding it. We crawled the internal links of one of the sites we manage, destinos.fun, and found 477 destinations with issues. We fixed most of them without writing a single new word of content. Here’s the full breakdown, including what didn’t end at zero.

The first crawl: September 14, 2026

We read the 1.873 posts via the WordPress API, pulled every internal link, and requested each destination just once. Result: 1.233 links, 872 distinct destinations, 477 with issues.

The key to the method is counting destinations, not links. A broken destination repeated across a hundred posts is one fix, not a hundred. When we categorized the 477, four very different families emerged:

  • Posts set to «private»: 38. Written, linked from other posts, and never published. For visitors, it’s a 404.
  • Links missing the language prefix /pt/: 195. The Portuguese post exists, but the link points to the path without the prefix and bounces through a redirect.
  • Links without a trailing slash: 365. They work, but each one burns a 301 redirect before loading.
  • One-offs: 10 posts that don’t exist in any state, 7 deleted 2016 images, and 1 scheduled post.

A mistake that was on us

The first version of the report said there were 225 links with the domain written twice. They didn’t exist. The posts use
//destinos.fun/ruta, a protocol‑relative address that works perfectly. The duplicated domain was being created by our own auditor, which was prepending the domain.

We caught it because we read the actual HTML before replacing anything. Practical takeaway: before doing mass fixes, open three posts and check the source. An audit report is a hypothesis, not a fact.

What we fixed, and why no new copy was needed

Of the four families, two are purely mechanical: the trailing slash and the language prefix. They don’t change a single word of the post; they change an address inside a link. On September 15 we fixed them across 560 posts: 365 links without a slash and 195 missing /pt/.

Three precautions that apply to any site:

  1. Back up the original content of each post before touching it, one file per post. If something goes wrong, you restore that post—not the whole site.
  2. One pattern per pass. Each replacement follows a clear, verifiable rule—not a “fix everything” with five mixed conditions.
  3. Check counts, not exit codes. The first run stopped at 324 of 560 and ended with exit code 0, no error message. We caught it by counting the backups.

When we finished we reread the 1.868 published posts: zero with links missing a trailing slash and zero without a language prefix.

The 38 “private” ones aren’t fixed—they’re published

Nothing to redirect here. These were written, hidden posts, and the internal links rightly pointed to them. The fix was to publish them. We published 37 of the 41 that were in private status, each with a link to its version in the other language. The remaining four were held back for a reason: one had junk stuck to the title and the others didn’t have counterparts in every language.

The second crawl: October 7, 2026

Twenty-two days later we crawled again. The site had grown:
2.047 posts, 1.723 links, 1.101 destinations. And the result isn’t “zero”:

  • 35 destinations with issues, down from 477. A reduction of over 92%.
  • 7 truly broken: all of them 2016 images from posts about beaches in Cancún that are no longer in the media library.
  • 28 redirects that end on a page that loads (200). Most are links to the version in another language without its prefix; six are links in the form ?p=número; two are posts that redirect to the homepage.

In short: the mechanical issues were solved in the existing posts, but they reappeared in the new ones. Fixing the old without fixing the source is like bailing the tub with the faucet open. Every new post you write or translate can reintroduce the missing prefix.

Why a broken internal link is costly

A broken link or one that bounces doesn’t make noise—no one writes in to complain. But it carries three real costs. A visitor who lands on a 404 leaves. Every redirect adds latency and burns part of Google’s crawl budget. And a link pointing to a hidden post wastes exactly the signal—link equity—that should flow to a live page.

On a multilingual site the problem multiplies, because each language has its own prefix and a small template or translation oversight can send hundreds of links to the wrong path. That’s why on destinos.fun, with three languages, the prefix was the second biggest source of issues.

How to do it on your site

  1. Crawl via the API, not by hand. Read all content, collect internal links, and request each destination once. On a site with two thousand posts it takes about ten minutes.
  2. Classify before fixing. Separate the mechanical (slash, language, protocol) from the editorial (hidden posts, deleted pages, missing images). The first is batch-fixable; the second needs a decision.
  3. Back up and fix by pattern. One rule per pass, one backup per post.
  4. Verify with another crawl. Rereading the content and counting matches is the proof; a script ending without error isn’t.
  5. Repeat monthly. A site that publishes weekly generates new links every month. Two crawls three weeks apart tell you whether the problem is fixed or just hiding.

What this changes, and what it doesn’t

A word of caution: fixing internal links on its own won’t move a site up the rankings. It removes unnecessary redirects, avoids dead ends for visitors, and lets Google’s crawl spend its time on real content. It’s technical hygiene: necessary, inexpensive, and measurable, but it doesn’t replace content that answers what people are searching for.

If your site has hundreds of posts and you don’t know how many of your internal links are failing, write to us. We’ll crawl the site, deliver the full classification, and tell you what can be fixed in an afternoon and what needs your call.


Figures from two of our own crawls of destinos.fun, on September 14 and October 7, 2026, done via the WordPress API. Totals change daily because the site keeps publishing; the ones in this article correspond to those dates.

Versión en español: De 477 enlaces con problema a cero, sin escribir una palabra nueva

Suscribete a nuestro Blog

Actualización de contenido de notícias

Más Notícias de Marketing, Inteligencia artificial y automación

¿Necesitas una Concultoría?

Envíanos un mensaje que agendamos una cita gratis

CTA