Convertisseur PX → REM, gratuit

Convertissez les pixels en rem et inversement, avec une taille de police de base configurable.

px (valeur par défaut du navigateur : 16)

Table de référence

PXREM

Comment ça marche

REM signifie « root em » et est relatif à la taille de police de l'élément racine. Par défaut, les navigateurs utilisent 16 px. La formule est simple : rem = px ÷ base et px = rem × base. Modifiez la taille de base ci-dessus si votre projet utilise une racine différente.

Questions fréquentes

Pourquoi utiliser rem au lieu de px ?

Les unités REM s'adaptent au réglage de taille de police de l'utilisateur dans son navigateur, améliorant l'accessibilité. Si un utilisateur augmente sa taille de police par défaut, les mises en page basées sur rem s'ajustent automatiquement, contrairement aux valeurs en pixels qui restent fixes.

Quelle est la différence entre em et rem ?

EM est relatif à la taille de police de l'élément parent et peut se cumuler dans les éléments imbriqués. REM est toujours relatif à la taille de police de l'élément racine (<html>), ce qui le rend plus prévisible.

Quelle base utiliser ?

La plupart des projets utilisent la valeur par défaut du navigateur de 16 px. Certains développeurs définissent html { font-size: 62.5%; } (10 px) pour des calculs plus simples. Utilisez la taille de police racine définie pour votre projet.

Ce qu'est réellement le rem

« Rem » signifie root em. La spécification W3C CSS Values Level 3 le définit comme « égal à la valeur calculée de font-size sur l'élément racine », c'est-à-dire sur l'élément <html>. Les navigateurs définissent <html> à 16px par défaut, sauf si on le remplace, de sorte que sur une page standard, 1rem = 16px, 0.5rem = 8px, 1.5rem = 24px, 2rem = 32px.

Si une feuille de style déclare html { font-size: 20px }, alors 1rem = 20px pour le reste du document. Si l'utilisateur a augmenté la valeur par défaut de son navigateur à 24px (un ajustement courant pour la basse vision), 1rem = 24px même sans aucune surcharge dans la feuille de style, et c'est tout l'argument d'accessibilité du rem en une phrase.

Pourquoi le rem compte : l'argument de l'accessibilité

Les navigateurs exposent aux utilisateurs deux mécanismes de mise à l'échelle différents, qui se comportent différemment vis-à-vis des unités :

C'est pourquoi une mise en page construite en rem respecte la préférence d'accessibilité de l'utilisateur, alors qu'une mise en page construite en px ne le fait pas. Le critère de succès WCAG 2.2 1.4.4 (Redimensionnement du texte, niveau AA) exige que le texte puisse être agrandi à au moins 200 % sans perte de contenu ni de fonctionnalité. Le zoom du navigateur seul satisfait techniquement à ce critère, mais les mises en page basées sur rem le satisfont plus proprement, car elles respectent le mécanisme de taille de police par défaut plus granulaire, qui est ce que les utilisateurs malvoyants ajustent réellement au quotidien.

Le piège de cumul de l'em qui motive le rem

Avant le rem, la seule façon d'obtenir une typographie évolutive en CSS était l'em, qui est relatif à la taille de police de l'élément parent, pas à celle de la racine. Le problème classique : les éléments imbriqués dont les tailles de police sont basées sur l'em se cumulent.

.list { font-size: 1.2em; }
.list .list { font-size: 1.2em; } /* renders at 1.44× the grandparent */
.list .list .list { font-size: 1.2em; } /* now 1.728× */

Trois listes imbriquées gonflent jusqu'à près du double de la taille du corps, ce qui n'est presque jamais voulu. Le rem résout cela en s'ancrant à la racine à chaque fois : trois éléments imbriqués à 1.2rem font tous 19,2px quelle que soit la profondeur d'imbrication. C'est pourquoi la plupart des feuilles de style modernes utilisent le rem pour la font-size et réservent l'em aux proportions internes d'un composant (tailles d'icônes qui doivent correspondre au texte d'un bouton, remplissage dans un bouton qui évolue avec son libellé).

L'astuce des 62,5 %, des calculs pratiques, une accessibilité discutable

Un modèle popularisé par Jonathan Snook dans son article de mai 2011 : définir html { font-size: 62.5% }. Comme 62,5 % × 16 = 10, cela fait 1rem = 10px par défaut, un calcul mental pratique. 1.6rem = 16px, 2.4rem = 24px, 4.8rem = 48px. Les designers l'ont apprécié parce qu'il supprime l'arithmétique malcommode du « diviser par 16 » de chaque valeur.

La critique d'accessibilité (soulevée à l'époque et renforcée dans des écrits ultérieurs) : définir la taille de police racine à 62,5 % réduit en réalité ce que l'utilisateur a choisi dans les préférences de son navigateur. Un utilisateur qui a réglé sa valeur par défaut à 24px parce qu'il est malvoyant verrait le corps de texte à 15px, ce qui anéantit tout l'intérêt d'utiliser le rem. La réfutation moderne consiste à régler la racine à 62,5 % mais à déclarer explicitement la taille de police du corps à 1.6rem (de retour à 16px) pour que la surcharge de l'utilisateur se propage correctement. De nombreuses équipes sautent entièrement l'astuce et vivent avec des calculs un peu moins élégants.

Quand utiliser rem, quand utiliser px : le cadrage de Comeau

L'article de Josh W. Comeau, « px or rem? » (mai 2022, mis à jour en mai 2025), propose l'heuristique à une seule question la plus utile pour cette décision. Demandez-vous : « Cette valeur doit-elle augmenter à mesure que l'utilisateur augmente la taille de police par défaut de son navigateur ? » Si oui, utilisez rem. Si non, utilisez px.

Selon ce test :

Le test à une seule question produit des réponses cohérentes sur des milliers de décisions dans une base de code, ce qui est le vrai gain : les feuilles de style obtenues se comportent comme les utilisateurs s'y attendent, à la fois sous le zoom et avec la personnalisation de la taille de police.

Tailwind CSS 4 est passé au tout-rem

Tailwind CSS v4.0 (janvier 2025) est livré avec une échelle par défaut entièrement basée sur le rem. Chaque jeton de typographie (text-xs 0,75rem jusqu'à text-9xl 8rem) et chaque jeton d'espacement (p-1 0,25rem, p-4 1rem, m-8 2rem) est en rem d'emblée. Tailwind 4 laisse délibérément la racine <html> à la valeur par défaut du navigateur de 16px (ils n'appliquent explicitement pas l'astuce des 62,5 %) pour que les préférences d'accessibilité de l'utilisateur se propagent proprement. Des dizaines de millions de projets livrent désormais des systèmes de design basés sur le rem par défaut, ce qui est l'argument le plus fort en faveur de la convergence de l'écosystème.

Table de conversion avec la racine par défaut de 16px

PixelsRemUsage courant
8 px0,5 remLa moitié de l'unité de base, petit espacement
12 px0,75 remLégende / petits caractères
14 px0,875 remTexte secondaire
16 px1 remCorps de texte par défaut
18 px1,125 remCorps légèrement accentué
20 px1,25 remParagraphe d'introduction
24 px1,5 remTitre H4 ; grand texte d'interface
32 px2 remTitre H3
48 px3 remTitre H2 / héros
64 px4 remTitre H1 / d'affichage

La place du rem dans la boîte à outils moderne

Le rem est le bon choix par défaut pour la typographie et l'espacement ancré à la typographie, mais ce n'est pas la réponse à tous les problèmes de mise en page. La boîte à outils moderne comprend aussi :

Pour tout le reste (corps de texte, titres, remplissages, largeurs de boutons, points de rupture), le rem est la solution de facilité et le choix par défaut le plus accessible.

Autres questions

Et si mon projet utilise une taille de police de base non standard ?

Changez le champ Taille de police de base ci-dessus pour la valeur que résout le html { font-size: … } de votre projet. Le calcul de conversion reste rem = px ÷ base quelle que soit la base. Si votre base de code utilise 18px, 32px devient 1.78rem ; à 10px (l'astuce des 62,5 %), elle devient 3.2rem. Sachez que remplacer la taille de police racine a des implications d'accessibilité pour les utilisateurs qui personnalisent la valeur par défaut de leur navigateur, voir la discussion sur l'astuce des 62,5 % ci-dessus.

Pourquoi 0,625rem ne s'affiche-t-il pas exactement à 10px ?

C'est le cas, mathématiquement, avec la racine par défaut de 16px : 0.625 × 16 = 10. Mais les navigateurs effectuent le rendu avec une précision au sous-pixel et peuvent aligner les valeurs finales sur des pixels d'appareil entiers, de sorte qu'une bordure 0.625rem peut occasionnellement apparaître légèrement différente d'une bordure 10px codée en dur selon le DPR du moniteur. Pour des filets d'un pixel parfaits, utilisez 1px directement ; pour tout le reste, la valeur basée sur le rem convient.

Puis-je mélanger rem et px dans la même feuille de style ?

Oui, et vous le devriez. Utilisez le rem pour les choses qui devraient s'adapter à la préférence de taille de police de l'utilisateur (typographie, rythme vertical, points de rupture) et le px pour celles qui ne le devraient pas (bordures, détails d'icônes, ombres décoratives). La question « cette valeur doit-elle s'adapter ? » de Comeau est le filtre pratique ; la réponse correspond proprement à l'une ou l'autre unité presque à chaque fois.

Les outils de build convertissent-ils automatiquement px en rem ?

Oui, des plugins PostCSS comme postcss-pxtorem et postcss-rem-to-responsive-pixel peuvent réécrire les valeurs en px de votre CSS source vers le rem pendant l'étape de build, avec des seuils configurables (par ex. « convertir tout ce qui est ≥ 12px »). Ils sont utiles lors de la migration d'une base de code existante chargée en px. Un convertisseur en direct comme cette page reste utile pour les cas ponctuels, les consultations de spécifications de design et l'apprentissage des calculs à la main.

Des données sont-elles envoyées à un serveur ?

Non. La conversion est une seule division, de l'arithmétique JavaScript pure qui s'exécute en local dans votre navigateur. Rien de votre saisie ne quitte la page ; l'outil fonctionne hors ligne une fois chargé.

Outils associés