
Outil CLI rapide pour scanner les sites web, les sitemaps et les listes d'URL à la recherche de liens brisés, avec des workers concurrents, un rapport de couverture et plusieurs formats de sortie.
Trouvez les liens morts (liens brisés)
Documentation • Installation • GitHub Action • Contribuer • Changelog
Un lien mort (lien brisé) désigne un lien dans une page web qui ne peut pas être connecté. Ces liens peuvent avoir un impact négatif sur le SEO et la sécurité. Cet outil permet de les identifier et de les modifier facilement.

Vous cherchez la v1 (gem Ruby) ? Elle vit désormais sur la branche
legacy/v1et continue de publier la gemdeadfinderpour les corrections de bugs et les versions de sécurité. héberge la réécriture en Crystal (v2+).
mainbrew install deadfinder
# https://formulae.brew.sh/formula/deadfinder
docker run ghcr.io/hahwul/deadfinder:latest deadfinder url https://example.com
Téléchargez l'archive pour votre plateforme depuis la dernière version, extrayez-la et placez deadfinder dans votre PATH.
nix run github:hahwul/deadfinder
nix profile install github:hahwul/deadfinder
nix develop github:hahwul/deadfinder
Nécessite Crystal >= 1.19.1 et cmake (pour le post-install du parseur HTML lexbor — sans lui, shards install échoue avec 'cmake' : Aucun fichier ou dossier de ce type).
# macOS
brew install crystal cmake
# Debian / Ubuntu
sudo apt install crystal cmake
shards install
crystal build src/cli_main.cr -o deadfinder --release
# ou : juste compiler
deadfinder sitemap https://www.hahwul.com/sitemap.xml
Épinglez un tag de version spécifique. @latest n'est pas une référence Actions valide.
steps:
- name: Exécuter DeadFinder
uses: hahwul/deadfinder@v2 # suit la dernière 2.x — épinglez un tag spécifique (ex. @2.0.2) pour une reproductibilité plus stricte
id: broken-link
with:
command: sitemap # url / file / sitemap / pipe
target: https://www.hahwul.com/sitemap.xml
# timeout: 10
# concurrency: 50
# silent: false
# headers: "X-API-Key: 123444"
# worker_headers: "User-Agent: Deadfinder Bot"
# include30x: false
# user_agent: "Apple"
# proxy: "http://localhost:8070"
# proxy_auth: "id:pw"
# match: ""
# ignore: ""
# coverage: true
# visualize: report.png
- name: Gestion de la sortie
run: echo '${{ steps.broken-link.outputs.output }}'
Si vous avez trouvé un lien mort et souhaitez l'ajouter automatiquement comme issue, veuillez vous référer à l'article « Automatiser la détection des liens morts ».
Usage: deadfinder <command> [options]
Commands:
pipe Scanner les URL depuis STDIN
file <FILE> Scanner les URL depuis un fichier
url <URL> Scanner une seule URL
sitemap <SITEMAP-URL> Scanner les URL depuis un sitemap
completion <SHELL> Générer le script de complétion (bash/zsh/fish)
version Afficher la version
Options:
-r, --include30x Inclure les redirections 30x comme liens morts
-c, --concurrency=N Nombre de workers concurrents (défaut : 50)
-t, --timeout=N Délai d'attente en secondes (défaut : 10)
-o, --output=FILE Fichier pour écrire les résultats
-f, --output_format=FORMAT Format de sortie : json, yaml, toml, csv, sarif (défaut : json)
-H, --headers=HEADER En-têtes HTTP personnalisés pour la requête initiale
--worker_headers=HEADER En-têtes HTTP personnalisés pour les requêtes des workers
--user_agent=UA Chaîne User-Agent
-p, --proxy=PROXY Serveur proxy (HTTP et HTTPS CONNECT)
--proxy_auth=USER:PASS Authentification proxy
-m, --match=PATTERN Motif d'URL à correspondre (regex)
-i, --ignore=PATTERN Motif d'URL à ignorer (regex)
-s, --silent Mode silencieux
-v, --verbose Mode verbeux
--debug Mode débogage
--limit=N Limiter le nombre d'URL à scanner
--coverage Activer le suivi et le rapport de couverture
--visualize=PATH Générer une image PNG de visualisation
# Scanner les URL depuis STDIN (URL multiples)
cat urls.txt | deadfinder pipe
# Scanner les URL depuis un fichier
deadfinder file urls.txt
# Scanner une seule URL
deadfinder url https://www.hahwul.com
# Scanner les URL depuis un sitemap
deadfinder sitemap https://www.hahwul.com/sitemap.xml
deadfinder sitemap https://www.hahwul.com/sitemap.xml -o output.json
cat output.json | jq
{
"Target URL": [
"DeadLink URL",
"DeadLink URL",
"DeadLink URL"
]
}
Avec --coverage :
deadfinder sitemap https://www.hahwul.com/sitemap.xml --coverage -o output.json
{
"dead_links": {
"Target URL": ["DeadLink URL 1", "DeadLink URL 2"]
},
"coverage": {
"targets": {
"Target URL": {
"total_tested": 14,
"dead_links": 7,
"coverage_percentage": 50.0
}
},
"summary": {
"total_tested": 14,
"total_dead": 7,
"overall_coverage_percentage": 50.0
}
}
}
deadfinder completion bash > /etc/bash_completion.d/deadfinder
deadfinder completion zsh > ~/.zsh/completion/_deadfinder
deadfinder completion fish > ~/.config/fish/completions/deadfinder.fish
Les contributions sont les bienvenues ! Si vous avez une idée d'amélioration ou souhaitez signaler un bug :
feature/awesome-feature ou bugfix/annoying-bug).main.