Tool.Yun
Outils pour les développeurs
Aide-mémoire PowerShell
Aide-mémoire de la commande chmod
Aide-mémoire des commandes Tmux
Aide-mémoire des commandes Zellij
Aide-mémoire des commandes à l'écran
Bash Cheatheet
Docker Cheatheet
Docker Compose Cheatheet
Docker Swarm Cheatheet
Dockerfile Cheatheet
Feuille de triche
Feuille de triche de Markdown
Feuille de triche regex commune
Git Cheatheet
Git sémantique commit trichetheet
JQ TicheSheet
JSONPath Syntax Cheatheet
K8S Cheatheet
Nano Cheatheet
Nginx trichetheet
SED CHRYSHEET
Sélectionneurs CSS
Vim Cheatheet
Xpath syntaxe Cheatheet
Décodeur de code QR
Générateur de code QR
Générateur de code QR WiFi
Générateur de code-barres
Générateur de contacts QR
Lecteur de code-barres
Validateur GTIN
tools.epc-qrcode-generator.name
Base64 Encodeur / décodeur hexagonal
Base64 Encodeur de chaîne / décodeur
CSV aux données
Caractères Unicode à Java Entities Converter
Computer de consommation d'énergie et de dépenses
Convertisseur d'unité de stockage de données
Convertisseur dBm mW
Convertisseur de base entier
Convertisseur de coordonnées géographiques
Convertisseur de fichiers Base64
Convertisseur de format de variables Env
Convertisseur de propriétés
Convertisseur numérique romain
De nombreux convertisseurs d'unités
Excel aux données
Générateur ulide
Normalizer par e-mail
Texte au binaire UTF-8
Texte à Unicode
Torrent à l'aimant
ANSIBLE Vault Crypt Decrypt
Analyseur JWT
Analyseur SAML
Bcrypt
Calculateur CRC
Certificat / analyseur clé
Chiffrement de chaînes Jasypt
Chiffrement de fichiers PGP
Convertisseur de certificat SSL
Cryptage PGP
Cryptage RSA
Crypter / décrypter le texte
Cryptographie d'âge
Encodeur/décodeur Bech32
Générateur HMAC
Générateur JWT
Générateur de RSE
Générateur de certificat x509
Générateur de paires de clés ECDSA
Générateur de paires de clés ED25519
Générateur de paires de clés RSA
Hachage Argon2
Hachage de fichiers
Niceware Octets en phrase de passe
Partage de secrets de Shamir
Paseto / Paserk public / privé
Paseto / paserk local
Pgp keygen
Signataire et vérificateur RSA / DSA / ECDSA
Texte de hachage
Alarme
Alarme Cron / en semaine
Analyseur de fichiers ical
Calculateur ETA
Calculateur TTL
Calculatrice de durée
Calculatrice de durée de date
Calculatrice de jours
Chronomètre
Compte à rebours
Convertisseur de date
Convertisseur de fuseau horaire
Convertisseur de numéros de semaine
Générateur ical
Quel jour ?
fusion ical
Convertisseur de format Docker Compose
Docker Compose vers un fichier .env
Docker Composer to Docker Run Converter
Docker Inspecter à Docker Run
Docker Run to Kubernetes
Docker Run vers des quadroutes
Docker compose aux quadlets
Docker compose à kubernetes
Docker exécuté vers Docker Compose Converter
Générateur RBAC Kubernetes
Générateur d'étiquettes Dockerfile
Trafik Docker compose Maker
Téléchargeur d'images Docker
Validateur Docker Compose
Étiquettes Docker Pangolin
Analyseur de téléphone et formateur
Calculateur SLA
Calculateur d'IMC
Calculateur de rythme de course
Chercheur de codes de pays ISO 3166
Compatibilité des licences logicielles
Convertisseur de calendrier
Convertisseur de devises
Convertisseur en majuscules RMB
Dictionnaire en ligne
Directives d'éclairage IES
Explication des commandes Shell
Recherche ISO 639
Recherche Unicode
VALIDATEUR DE LUHN
VALIDATEUR IBAN et PARSER
VATURE VALIDATEUR
Validateur ISBN et analyseur
Vérificateur de carte de crédit
Générateur d'expressions Cron
Amélioration et minification CSS/JS
Convertisseur de devis
Convertisseur de fichiers hexadécimal
Convertisseur en boucle
Escaper de la chaîne
Générateur GitIgnore
Générateur d'attributs Git
Générateur de chaînes de connexion à la base de données
Générateur de courrier
Générateur de création de bases de données
Générateur de fausses données
Générateur de favori
Générateur de paramètres SQL
Générateur de scripts de test de charge K6
Générateur de secrets Django
Générateur de tables de base de données
Highlighter de code / scripts
Insert JSON à SQL
JSON à Protobuf
JSON à TypeScript
Javascript Unobfuscator / Unpacker
Jolie
Meta Generator ouvrir
Minificateur SQL
Minuterie de pomodoro
Obfuscateur JavaScript
SQL Prettify et Format
Stacktrace plus jolie
Séparateur de fichiers
Testeur API
Testeur Picomatch
Testeur d'échappement ANSI
Testeur d'interface utilisateur de fanfaronnade
Éditeur de commandes CLI
Calculateur d'amortissement
Convertisseur UUID
Générateur UUIDS
Générateur de code OTP
Générateur de code PIN
Générateur de mots de passe Diceware
Générateur de nanoïdes
Générateur de nombres aléatoires
Générateur de numératoires
Générateur de phrase passe
Générateur de phrases passagères BIP39
Générateur de token
Aperçu SVG
Comparateur d'images
Convertisseur Heic
Convertisseur ICO / PNG
Convertisseur de formats d'image
Filigrane
GIF vers MP4
Image EXIF ​​/ Metadata / GPS / JPEG Quality Reader
Image Resizer
Image et PDF OCRIE
Image à SVG (Potrace)
Inverseur de couleur d'image
Magnétophone
Rogner l'image
Supprimer l'arrière-plan de l'image
Supprimer l'exif
Cueilleur de cartes
Flipper de monnaie
Roue de fortune
Rouleau de dés
Analyseur de taille JSON
Aplatisseur JSON / Undeptener
CSV vers JSON
Convertisseur JS à JSON
Convertisseur JSON à JS
Convertisseur JSON à YAML
Convertisseur de chaîne JSON
Entité JSON à Java
Fusion JSON
JSON Diff
JSON Escaper / UNSCAPER
JSON MINIFY
JSON PRUTTIFY ET FORMAT
JSON aux données
JSON pour s'opposer
JSON vers .env
JSON vers MessagePack
JSON à C
JSON à CSV
JSON à PHP Code
JSON à PHP-Array
JSON à Python
JSON à SQL DDL
JSON à Schema
JSON à TOML
JSON à TS
JSON à XML
JSON à aller
Linter JSON
Maître de tri JSON
Message Pack vers JSON
ObjGen vers JSON
PHP-Array à JSON
Requête JSON
Rédacteur en chef JSON
Testeur JQ / JSONPath
tools.json-patch.name
Aide-mémoire de câblage RJ45 Cat6
Analyser de courrier électronique à rebond
Analyseur URL
Analyseur de cookies
Analyseur de rapport DMARC
Analyseur par e-mail
Calculateur de résistance
Chercheur de propriétés LDAP activeIrectory
Console du port série
Convertisseur GZIP / Deflate
Convertisseur brut intelligent
Convertisseur de codage mime
Convertisseur de numéro de point flottant
Convertisseur moyen-endien
Convertisseur objetId MongoDB
Décodeur EMV TLV
Décodeur URL de partage SharePoint
Décodeur de transactions ETH
Détecteur / décodeur de charme de texte
Détecteur de type de fichier
Encodeur / décodeur hexagonal
Extension d'URL courtes
Extracteur d'identification de flocon de neige
Générateur TCPDUmp
Générateur d'URL
Générateur de commandes Nmap
Informations sur le kicode
Lecteur de fichiers parquet
Masque de données sensible
Outlook Safelink Decoder
Parser MSG Outlook
Testeur DNS
Testeur HTTPS
Testeur de pixels morts
Testeur de propagation DNS
键盘测试器
Aperçu Markdown
Coller comme marquage
Différence Markdown
Epub vers Markdown
Générateur de TOC Markdown
Générateur de tableaux Markdown
HTML à Markdown
Markdown Lorem Ipsum
Markdown vers données
Markdown vers texte
Markdown à Docx
Markdown à HTML
Tableau de marque Beautifier
tools.markdown-format-converter.name
Éditeur de Markdown
Calculateur de pourboire
Calculatrice binaire
Convertisseur de formats mathématiques
OCR mathématique
Visualiseur de courbes trigonométriques/équations
Évaluateur mathématique
Calculatrice de distance GEO
Calculatrice du rapport d'aspect
Pourcentage de calculatrice
Référence
Compresseur PDF
Concaner PDF
Crypte PDF
Extracteur de page PDF
Extracteur de texte PDF
HTML vers PDF
PDF décrypter et déverrouiller
Pdf linéarize / fastweb
Vérificateur de signature PDF
Convertisseur d'accélération
Convertisseur d'angle
Convertisseur d'illuminance
Convertisseur d'unités de masse
Convertisseur d'unités de pression
Convertisseur d'unités de zone
Convertisseur d'énergie
Convertisseur d'énergie alimentaire
Convertisseur de débit volumique
Convertisseur de forces
Convertisseur de fréquence
Convertisseur de préfixes SI
Convertisseur de puissance
Convertisseur de température
Convertisseur de vitesse
Convertisseur des unités de longueur
Convertisseur des unités de volume
Ordinateur de fitness
Analyseur de force de mot de passe
Autorisation SIP
Calculateur IPv4 / 6 à CIDR (S)
Calculateur de fiabilité RAID
Calculateur de raid
Calculateur de taux de transfert de données
Calculateur visuel de sous-réseau
Calculatrice IPv4 / 6 CIDR à la plage IP
Calculatrice de ChMOD
Calculatrice de disque dur
Calculatrice de sous-réseau IPv4
Calculatrice de sous-réseau IPv6
Calculatrice de zpool RAID
Convertisseur d'adresse IPv4
Convertisseur d'adresse IPv6
Convertisseur d'adresse MAC
Convertisseur punycode
Curl Generator
Dnsbl
Décodeur ARPA
Décodeur X-VR-Spamcause
Désinfectant Har
Emplacement IP Geo
Entiers vers ipv4 / ipv6
Expanseur de plage IPv4
Force de mot de passe zxcvbn
Formateur Nginx
Formateur de commandes Shell
Générateur Apache Logrotate
Générateur Bimi DNS
Générateur DKIM DNS
Générateur DMARC DNS
Générateur DNS PTR
Générateur DNS SPF
Générateur FSTAB
Générateur HTACCESS
Générateur HTPASSWD / HTACCESS
Générateur IPv6 ULA
Générateur RSYNC
Générateur WPA PSK
Générateur d'adresses MAC
Générateur d'autherines de base
Générateur d'option43
Générateur de commandes UFW
Générateur de commandes d'arrêt
Générateur de configuration de Wireguard
Générateur de crontab
Générateur de ports aléatoires
Générateur iptables
IPv4-6 / iPrange / CIDR dans iPrange / CIDR / IPMask
Les sous-réseaux IP excluent le calculatrice
Linéariseur de commandes Shell
Listeur de sous-réseaux IPv4
Mon adresse IP
Numéros de port
Ping
Recherche d'adresse MAC
Requêtes DNS
Requêtes DNS/RDAP Cloudflare
Testeur WebSocket
Testeur de microphone
Testeur de ports TCP/UDP
Téléchargeur multi-link
Vérificateur Whois
Zpool Cheatheet
générateur de ligne de commande firewalld
tools.restic-command-generator.name
tools.url-redirection-checker.name
Linter TOML
TOML à JSON
TOML à YAML
Calculatrice de Levenshtein
Comparer la police
Convertisseur de cas
Convertisseur de code Morse
Convertisseur de disposition de clavier
Convertisseur de liste
Convertisseur rune
Diagramme de structure de dossiers
Emballer des fichiers pour l'IA
Encodeur / décodeur de jetons GPT
Estimateur de jeton GPT
Exportateur de Mermaid
Extraire du texte de HTML
Finder de lignes en double
Format unicode
Générateur Lorem Ipsum
Générateur de citations
Générateur de commande SED
Générateur de texte ASCII Art
Générateur/Bannière Zalgo
Image à Ascii Art
JSON vers TOON
Lecteur RSVP
Mots distincts
Obfuscateur de cordes
Partager le lien social
Remplaceur de texte intelligent et linebreaker
Répertorie le comparateur
Splitter rapide de l'IA
Statistiques de texte
Sélecteur d'emojis
Sélecteur de lignes aléatoires
TOON vers JSON
Tabulation pour espaces
Testeur Regex
Texte aux noms Unicode
Texte diff
Texte à l'alphabet de l'OTAN
Traducteur texte
Unicode à GSM-7
Vérificateur I et L
Analyseur d'agent utilisateur
CSS Gettificateur
Chaîne de slufier
Codes d'état HTTP
Convertisseur CSS XPATH
Convertisseur REM Pixel
Convertisseur d'unités CSS
Convertisseur de couleurs
Encoder / décoder les chaînes formatées
Fragment de recherche de texte d'URL
Futur d'URL
Générateur URL UTM
Générateur d'espace réservé SVG
Générateur de gradient CSS
HTML GARTIFIER
HTML vers XHTML
HTML vers données
Image à CSS
Informations sur l'appareil
Minficateur HTML
Nettoyant URL
Nettoyer HTML
Roue de couleur
Types de mime
Vérificateur de contraste de couleur
Échapper aux entités HTML
Éditeur HTML WYSIWYG
Formateur XML
Linter XML
ObjGen vers HTML
Testeur XSLT
Testeur xpath
XML à JSON
Apllareur YAML / Undeptener
Fusion de Yaml
YAML à JSON Converter
YAML à TOML
Yaml Prettify and Format

Xpath syntaxe Cheatheet

Xpath syntaxe Cheatheet

XPath navigates an XML or HTML document as a tree. Every step has the form axis::node-test[predicate], and most of it has a short form: //div[@class="card"]/a/@href reads “the href of every a inside any div with class card”.

⚠️ Browsers, Selenium and most scrapers implement XPath 1.0. ends-with(), matches(), lower-case() and replace() are 2.0+ and only work in tools like xmllint, Saxon or lxml with an XSLT 2.0 processor. Workarounds for 1.0 are given below.

🧭 Path Syntax

XPathSelects
/From the document root — an absolute path
//Anywhere in the document, at any depth
.The current (context) node
..The parent of the context node
@attrAn attribute
*Any element
@*Any attribute
text()The text nodes of an element
node()Any node at all, text and comments included
[n]The nth match — 1-based, not 0-based
[last()]The last match
a | bThe union of two expressions
/html/body            (: absolute: the body of the page :)
//text()              (: every text node :)
./div/b               (: relative to the context node :)
(//p)[2]              (: the second p in the whole document :)
//p[2]                (: every p that is the second p of its parent :)

🏷 Elements & Attributes

XPathDescriptionCSS
//EEvery <E> elementE
(//E)[2]The second <E> in the document—
//E[@A]<E> carrying attribute AE[A]
//E[@A="t"]<E> where A is exactly tE[A='t']
//E[contains(@A,"t")]<E> where A contains tE[A*='t']
//E[starts-with(@A,"t")]<E> where A starts with tE[A^='t']
//E[substring(@A, string-length(@A)-2)="t"]<E> where A ends with t (1.0 trick)E[A$='t']
//E[ends-with(@A,"t")]The same, XPath 2.0+ onlyE[A$='t']
//E[matches(@A,"r")]A matches regex r (2.0+)—
//E/@AThe value of attribute A—
//*/@AAttribute A of any element—
//E[@A2="t"]/@A1A1 where A2 is t—
//E1[@id="I1"] | //E2[@id="I2"]Either elementE1#I1, E2#I2
//E[@id="I1" or @id="I2"]<E> with either idE#I1, E#I2

🆔 Id, Name, Class & Language

XPathDescriptionCSS
//*[@id="I"]The element with id I#I
//E[@id="I"]<E> with id IE#I
//*[@name="N"]Any element named N[name='N']
//*[@name="N"][@value="v"]Named N with value v[name='N'][value='v']
//*[contains(concat(" ", normalize-space(@class), " "), " C ")]Element with class C — the padding avoids matching C2.C
//E[contains(concat(" ", normalize-space(@class), " "), " C ")]<E> with class CE.C
//E[@lang="L" or starts-with(@lang, concat("L","-"))]<E> in language L or a subcodeE[lang|='L']

📝 Text & Links

XPathDescriptionCSS
//*[.="t"]Element whose whole text is exactly t—
//E[contains(text(),"t")]<E> with a text node containing t—
//E[contains(.,"t")]<E> whose text, descendants included, contains t—
//E[normalize-space()="t"]Exact text, ignoring surrounding whitespace—
//aEvery linka
//a[.="t"]The link labelled exactly t—
//a[@href="url"]The link pointing at urla[href='url']
//a[.="t"]/@hrefThe URL behind the label t—
//a[starts-with(@href,"https")]Secure links onlya[href^='https']

👪 Parents & Children

XPathDescriptionCSS
//E/*[1]First child of <E>E > *:first-child
//E/*[last()]Last child of <E>E > *:last-child
//E[1]Each <E> that is the first of its type in its parentE:first-of-type
//E[last()]Last <E> of its typeE:last-of-type
//E[2]Second <E> of its typeE:nth-of-type(2)
//*[2][name()="E"]Second child, if it is an <E>E:nth-child(2)
//E[last()-1]Second-to-last <E> of its typeE:nth-last-of-type(2)
//E/..The parent of <E>—
//div/form/parent::*Every element that has a form childdiv:has(> form)
//*[@id="I"]//E<E> anywhere under id I#I E
//E[count(*)=0]<E> with no element childrenE:empty
//E[count(*)=1]<E> with exactly one child—
//E[count(preceding-sibling::*)+count(following-sibling::*)=0]<E> that is an only childE:only-child
//E[count(../E)=1]<E> with no <E> siblingsE:only-of-type
//E1[E2 and not(*[not(self::E2)])]<E1> whose only children are <E2>—
//E[position() mod N = M + 1]Every Nth element, offset by ME:nth-child(Nn+M)

👥 Siblings

XPathDescriptionCSS
//E2/following-sibling::E1Every <E1> after a sibling <E2>E2 ~ E1
//E2/following-sibling::*[1][name()="E1"]<E1> immediately after <E2>E2 + E1
//E2/following-sibling::*[2][name()="E1"]<E1> two siblings after <E2>E2 + * + E1
//E/following-sibling::*[1]Whatever follows <E> directlyE + *
//E2/preceding-sibling::E1Every <E1> before a sibling <E2>—
//E2/preceding-sibling::*[1][name()="E1"]<E1> immediately before <E2>—
//E/preceding-sibling::*[1]Whatever precedes <E> directly—

📊 Tables & Form State

XPathDescriptionCSS
//*[@id="T"]//tr[3]//td[2]Third row, second cell#T tr:nth-child(3) td:nth-child(2)
//td[preceding-sibling::td="t"]The cell right after the one reading t—
//td[preceding-sibling::td[contains(.,"t")]]Cells following one containing ttd:has(~ td)
//table[count(tr)=1 and count(tr/td)=2]Tables with one row and two columns—
//table/tr[last()]The last row of a tabletable tr:last-child
//E[@disabled]A disabled controlE:disabled
//E[not(@disabled)]A control that is not disabledE:enabled
//*[@checked]A checked checkbox or radio:checked

🧮 Functions

Strings

FunctionReturns
contains(haystack, needle)True when the first string contains the second
starts-with(haystack, needle)True when it starts with it
concat(s1, s2, …)The strings joined together
normalize-space(s)The string with runs of whitespace collapsed and trimmed
string-length(s)The number of characters
substring(s, start [, length])A slice — 1-based
substring-before(haystack, needle)Everything before the first occurrence
substring-after(haystack, needle)Everything after it
translate(s, from, to)Characters mapped one by one — the 1.0 way to fold case

Numbers, logic & nodes

FunctionReturns
count(node-set)How many nodes matched
sum(node-set)The sum of their numeric values
position()The index of the context node within its step
last()The size of the context — so [last()] is the final node
name([node-set])The qualified name of the first node
namespace-uri([node-set])Its namespace URI
lang(s)True when the node is in that language
not(expr)The negation
true() / false()Boolean constants
boolean(expr) / string(o) / number(o)Type conversions
ceiling(n) / floor(n) / round(n)Rounding

💡 Case-insensitive matching in XPath 1.0: //E[contains(translate(@A,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz"), "t")]

🧭 Axes

AxisShort formSelects
child(default)The direct children of the context node
descendant//Every node below the context node
descendant-or-self//The context node and everything below it
parent..The single parent node
ancestor—Parent, grandparent, up to the root
ancestor-or-self—The same, including the context node
following—Everything after the node in document order, except descendants
following-sibling—Later siblings under the same parent
preceding—Everything before it, except its ancestors
preceding-sibling—Earlier siblings under the same parent
attribute@The attributes of the node
self.The context node itself
//td[.="Total"]/ancestor::table          (: the table a cell belongs to :)
//h2[.="Specs"]/following-sibling::ul[1] (: the list after a heading :)
//input[@name="q"]/ancestor-or-self::form (: the form wrapping a field :)

🧠 Worked Examples

//hr[@class="edge" and position()=1]
(: the first hr of class 'edge' under each parent :)

//table[parent::div[@class="pad"] and not(@id)]//a
(: links in unnamed tables inside a padded div :)

/html/body/div/*[preceding-sibling::h4]
(: whatever comes after an h4 :)

//tr/td[font[@class="head" and text()="TRACK"]]
(: cells whose font child says TRACK :)

//*[count(*)=3]
(: elements with exactly three children :)

//rdf:Seq/rdf:li/em:id
(: namespaced elements — the prefixes must be bound by the host tool :)

//var | //acronym
(: a union of two node sets :)

🛠 Running XPath

// browser devtools console
$x('//a[contains(@href, "docs")]');

// plain DOM API
document.evaluate('//h1', document, null, XPathResult.ANY_TYPE, null).iterateNext();
# from the shell, over XML or HTML
xmllint --xpath '//book/title/text()' catalog.xml
xmllint --html --xpath '//a/@href' page.html 2>/dev/null
from lxml import html
tree = html.parse('page.html')
tree.xpath('//div[@class="card"]/a/@href')
# Selenium and Playwright both accept XPath locators
driver.find_element(By.XPATH, '//button[normalize-space()="Save"]')
page.locator('xpath=//button[normalize-space()="Save"]').click()

⚠️ Notes

  • Indexes start at 1. [0] never matches anything.
  • //E[1] is per-parent, (//E)[1] is document-wide — the single most common XPath bug.
  • Namespaced documents need prefixes registered with the host library; in XPath 1.0 a common workaround is //*[local-name()="title"].
  • // is expensive on large documents; anchor the path when you can.
  • Prefer text matching with normalize-space() — HTML is full of stray whitespace and line breaks.

📚 Resources

  • MDN — XPath
  • MDN — XPath functions
  • XPath 1.0 specification
  • XPath cheat sheet (alephzarro)

Credit to the original author: https://gist.github.com/jmaccabee/550a0b9fcfdc7e6b170cd34c6ec7bc56