# Extension de nom de fichier

En informatique, une extension de nom de fichier (ou simplement extension de fichier, voire extension) est un suffixe de nom de fichier fait pour identifier son format. Ainsi, on dira qu'un fichier nommé exemple.txt a l'extension .txt (ou simplement txt). Ainsi la notion d'extension se spécifie-t-elle au moins par l'adoption conventionnelle d'un caractère dit séparateur (le point dans l'exemple précédent), suivi d'une chaîne (éventuellement vide) libre composée de caractères tirés d'une liste excluant le séparateur d'extension lui-même et les caractères interdits par le système de fichiers (et éventuellement de leur position dans la chaîne, comme l'antislash interdit partout et l'espace interdit en début et fin dans Windows). Le séparateur fait partie de l'extension. L'extension fait partie du nom de fichier. Le caractère retenu comme pouvant jouer le rôle de séparateur d'extension peut être présent plusieurs fois (éventuellement successives) dans le nom de fichier, seule sa dernière occurrence est le séparateur.

## Usage selon le système d'exploitation

Un suffixe est séparé du nom par un point (.) en MS/DOS et CP/M.
C'est aussi le cas sur Microsoft Windows, où l'usage des extensions de fichier est généralisé. Les logiciels ainsi que le système d'exploitation et les usagers utilisent l'extension pour appréhender le format de chaque fichier et l'associer avec un logiciel capable de le manipuler. Toutes les extensions étaient visibles par défaut dans les listes de fichiers depuis les premiers temps du DOS. Certaines extensions (dites « ... dont le type est connu. », voir explication plus loin) sont maintenant masquées par défaut depuis la version Windows 95 de l'explorateur de fichiers. En contrepartie, l'explorateur affiche à côté du nom de fichier stricto sensu une icône dont le graphisme est censé donner à l'utilisateur humain la même information (partielle, car plusieurs extensions peuvent correspondre à la même icône). Via une option de l'explorateur, l'utilisateur a cependant la possibilité de ré- «afficher les extensions de fichiers dont le type est connu » (sous-entendu « ... connu par le système d'exploitation. », ce qui signifie que diverses actions susceptibles d'être effectuées sur les fichiers affublés de l'extension en question sont enregistrées dans la configuration de Windows, soit pour un utilisateur particulier, soit au niveau global pour tous les utilisateurs : Ouvrir, Modifier, Imprimer, Jouer, ... , les principales étant directement visibles et accessibles via la touche de menu contextuel du clavier ou un clic droit de souris sur le fichier, l'action par défaut, correspondant au double-clic gauche ou à la touche Entrée figurant en gras dans ce menu). Cette décision de masquer certaines extensions est toujours contestée car elle est utilisable à des fins malignes pour induire les utilisateurs inexpérimentés en erreur, ce qui n'a pas manqué de se produire avec la dissémination de virus attachés en pièces-jointes à des messages électroniques et portant des noms tels que blague.doc.exe : l'extension proprement dite, c'est-à-dire les caractères situés après le dernier point (inclus) étant masquée, l'utilisateur croit ouvrir un fichier texte (.doc) alors qu'il lance le programme (.exe) inconnu blague.doc.exe
En VM/CMS, le suffixe, appelé filetype, est séparé du nom par une espace.
Sur Unix, conformément à la norme Filesystem Hierarchy Standard, les fichiers nécessaires au système d'exploitation sont placés dans différents répertoires en fonction de l'utilisation qui en est faite – utilisation qui dépend directement de leur format ; le système d'exploitation utilise rarement les extensions. Les extensions sont utilisées par souci de clarté par les logiciels applicatifs. Avec les environnements de bureau tels que KDE et GNOME, les suffixes sont aussi utilisés pour appréhender le format de chaque fichier. La première analyse du fichier lors de l'affichage se base sur l'extension, puis une seconde analyse se base sur l'utilitaire file qui inspecte le contenu d'un fichier pour détermine le type MIME du fichier.
Sur les versions 1 à 9 de Mac OS chaque fichier est équipé de métadonnées code de type et code du logiciel créateur. Ces métadonnées renseignent sur le format de fichier et le logiciel utilisé pour créer ce fichier. Le système d'exploitation et les logiciels applicatifs n'utilisent pas les extensions. Les extensions au nom du fichier sont parfois utilisées pour faciliter l'échange de documents avec les autres systèmes d'exploitation. Depuis la version 10 de Mac OS, les documents comportent systématiquement une extension au nom du fichier (que l'on peut ou non visualiser).

## Modification de l'extension

L'extension d'un fichier peut être modifiée par l'utilisateur de la même manière que le nom de fichier. Cependant,ceci peut provoquer la confusion des logiciels qui appréhendent le format de fichier d'après l'extension.
C'est la raison pour laquelle Microsoft Windows masque par défaut l'extension. Ceci peut être modifié dans les paramètres d'affichage des "options de dossiers", et le changement d'extension devient alors possible. Cependant Windows avertit l'utilisateur que le fichier risquera "d'être inutilisable" avec une demande de confirmation avant de faire le changement. Malgré ça, certaines extensions restent invisibles. C'est le cas de .lnk, extension des raccourcis.
Dans Windows, il est difficile de déterminer le type d'un fichier dont l'extension est erronée (ceci peut être exploité par certains utilisateurs pour camoufler certains fichiers sous une apparence trompeuse).
Au contraire, avec Unix, la simple commande file permet de reconnaître le format d'un fichier, par une reconnaissance heuristique du contenu.
Windows et Unix diffèrent sur la stratégie pour connaître l'intérpréteur nécessaire à l'exécution d'un script : Windows se base sur la notion d'extension, alors qu'Unix et Linux se basent sur la notion de shebang.
Sous Mac OS, le type de fichier n'est pas enregistré dans l'extension ni dans le fichier, mais dans une métadonnée stockée avec le nom, dans les partitions HFS, sous forme d'un type et d'un creator (indication du logiciel devant ouvrir le fichier), deux champs de quatre caractères chacun. Cela pose des problèmes lors d'échanges avec des systèmes non Mac, qui ne reconnaissent pas cette information.

## Exemples d'extensions courantes

* .aac : fichier audio avec pertes Advanced Audio Coding
* .avi : fichier vidéo Audio Video Interleave
* .doc : fichier texte, selon le cas Word ou WordPerfect
* .docx : fichier texte Word
* .gif : fichier image Graphics Interchange Format
* .gz : fichier compressé par gzip
* .h : fichier texte contenant un en-tête de programme en langage C.
* .htm ou .html : fichier Hypertext Markup Language
* .ico : fichier image contenant une icône
* .iso : fichier image CD ISO 9660
* .jpeg ou jpg ou jpe : fichier image Joint Photographic Experts Group
* .md : fichier texte Markdown
* .mkv : fichier vidéo MKV
* .mp3 : fichier audio avec pertes MP3 (Multimédia player 3 (génération))
* .mp4 : fichier vidéo avec pertes MP4 (Multimédia player 4 (génération))
* .odt : fichier texte au format libre Libre Office - Writer
* .odp : fichier présentation diaporama Libre Office - Impress
* .ods : fichier tableur similaire à Excel Libre Office - Calc
* .odg : fichier dessin Libre Office - Draw
* .pdf : fichier présentation PDF (Portable Document Format)
* .png : fichier image PNG
* .ppsx ou pptx : fichier présentation PowerPoint
* .py : fichier texte contenant un programme en langage Python.
* .rar : Fichier archive (RAR) Logiciel compatible : WinRar
* .tar : fichier archive Tar, souvent .tar.gz après compression avec gzip
* .torrent : fichier de métadonnées servant au téléchargement BitTorrent
* .xls et .xlsx : fichier tableur Excel
* .wav : fichier audio Waveform Audio File Format
* .zip : fichier archive ZIP
* .XML : fichier XML

## Exemples d'extensions courantes sous Windows

* .bat : fichier exécutable batch
* .bmp : fichier image Windows bitmap
* .exe : fichier exécutable pour Windows
* .txt : fichier texte Windows

## Exemple d'extensions courantes sous Linux

* .sh : fichier texte contenant une ou plusieurs commandes qui seront exécutées de manière séquentielle. Un script shell permet d'automatiser une série de commandes sur les systèmes Linux et Unix.
* les exécutables n'ont traditionnellement pas d'extension dans les dérivés d'Unix.

## Extensions à 3 caractères

Sous IBM CMS, repris dans les premières versions de Windows, le système de fichiers historique était limité pour les noms de fichier à 8 caractères pour le nom et à 3 caractères pour l'extension (on parle de "système 8+3"). Ceci explique que les extensions originaires d'autres systèmes sont souvent tronquées à 3 lettres :
* htm au lieu de html
* jpg ou jpe au lieu de jpeg
* mpg ou mpe au lieu de mpeg
* tgz au lieu de tar.gz