File format quick reference for developers
In web application development, knowledge of file formats is frequently required for file validation, MIME type determination, and upload limit design. This article compiles a list of commonly used file formats in development. Bookmark it and use it as a quick reference you can consult at any time.
Image format
| File Extension | MIME Type | Compression | Transparency | Primary use cases |
|---|---|---|---|---|
.png |
image/png |
Lossless | Support | Screenshots, logos, icons |
.jpg / .jpeg |
image/jpeg |
Lossy | Not supported | Photos, thumbnails |
.gif |
image/gif |
Lossless | Support (1bit) | Animation, simple diagrams |
.webp |
image/webp |
Both | Support | General Web Use (PNG Successor Candidate) |
.avif |
image/avif |
Both | Support | Next-generation web image |
.svg |
image/svg+xml |
None (XML) | Support | Vector images, icons |
<strong>Note:</strong> SVG is XML-based and carries the risk of XSS (Cross-Site Scripting). Displaying user-uploaded SVG directly is dangerous. Always perform sanitization.
Document Format
| File Extension | MIME Type | Internal structure | Primary use cases |
|---|---|---|---|
.pdf |
application/pdf |
Binary | Documents for printing, forms |
.docx |
application/vnd.openxmlformats-officedocument.wordprocessingml.document |
ZIP(XML) | Word Document |
.xlsx |
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
ZIP(XML) | Excel Spreadsheet |
.pptx |
application/vnd.openxmlformats-officedocument.presentationml.presentation |
ZIP(XML) | PowerPoint presentation |
Archive format
| File Extension | MIME Type | Features | Points to note |
|---|---|---|---|
.zip |
application/zip |
Most widely distributed, standard OS support | Garbled Japanese filenames (UTF-8 vs CP932) |
.tar.gz |
application/gzip |
Unix/Linux standard | Extraction tool may be required on Windows |
.7z |
application/x-7z-compressed |
High compression ratio | Dedicated tool (7-Zip) required |
.rar |
application/vnd.rar |
Split Archive Support | Proprietary format |
Text and data formats
| File Extension | MIME Type | Use case | Common issues |
|---|---|---|---|
.csv |
text/csv |
Data Exchange, Import/Export | Character Encoding, Line Break Code, and BOM |
.json |
application/json |
API Communication, Configuration Files | UTF-8 required (RFC 8259) |
.xml |
application/xml |
Configuration files and data exchange | Mismatch with encoding declaration |
.txt |
text/plain |
Logs, notes, README | Automatic character encoding detection is unstable |
MIME Type Validation
When implementing file upload functionality, it is important to validate not only the file extension but also the MIME type. However, since MIME type can be spoofed on the client side, also use magic byte (file header) checks on the server side.
// PHP でのマジックバイトによる判定
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mimeType = $finfo->file($_FILES['upload']['tmp_name']);
$allowedTypes = [
'image/png',
'image/jpeg',
'image/webp',
'application/pdf',
];
if (!in_array($mimeType, $allowedTypes, true)) {
throw new Exception('許可されていないファイル形式です');
}
// Node.js での file-type ライブラリを使った判定
import { fileTypeFromFile } from 'file-type';
const type = await fileTypeFromFile('upload.png');
console.log(type);
// { ext: 'png', mime: 'image/png' }
Download test files
For testing validation processing and upload functionality for each format, please use DevLab's test files.
- <a href="/ja/files/images/">Image Files</a> — PNG, JPG, WebP, GIF in various sizes
- <a href="/ja/files/pdf/">PDF Files</a> — PDF test files in various sizes
- <a href="/ja/files/zip/">ZIP Files</a> — For testing archive processing
- <a href="/ja/files/csv/">CSV files</a> — Testing data import
- <a href="/ja/files/json/">JSON Files</a> — For API testing
- <a href="/ja/files/txt/">Text Files</a> — For testing text processing
- <a href="/ja/files/broken/">Broken files</a> — Testing error handling
Summary
A correct understanding of file formats is the foundation for implementing safe and robust upload functionality. Validate using both MIME types and magic bytes, not just file extensions, to perform proper validation. We recommend bookmarking this reference so you can consult it at any time during development.
Test files for this article
- → <a href="/ja/files/images/" class="text-primary-600 dark:text-primary-400 hover:underline">Image Test Files List (PNG / JPG / WebP / GIF)</a>
- → <a href="/ja/files/pdf/" class="text-primary-600 dark:text-primary-400 hover:underline">PDF Test File List</a>
- → <a href="/ja/files/zip/" class="text-primary-600 dark:text-primary-400 hover:underline">ZIP test file list</a>
- → <a href="/ja/files/csv/" class="text-primary-600 dark:text-primary-400 hover:underline">CSV Test Files List</a>
- → <a href="/ja/files/json/" class="text-primary-600 dark:text-primary-400 hover:underline">JSON Test File List</a>
Related articles
- → <a href="/ja/blog/file-validation-checklist/" class="text-primary-600 dark:text-primary-400 hover:underline">Web Form File Validation Implementation Checklist</a>
- → <a href="/ja/reference/magic-bytes/" class="text-primary-600 dark:text-primary-400 hover:underline">Magic bytes (file signature) reference</a>