What is the FRM file format?
An .frm file is a MySQL table definition file that stores information about the structure and layout of a single database table. One .frm file is created for each table, and the table name is used for the .frm filename - so a table named orders produces orders.frm inside the MySQL data directory.
The .frm format records only the table schema: column names, data types, lengths, default values, and index/key metadata. It never holds row data. For MyISAM tables, the actual data lives in a companion .MYD file (with indexes in a .MYI file); MySQL required all three files together to fully access a MyISAM table. InnoDB tables paired their .frm with a separate .IBD tablespace file instead.
The file is a proprietary little-endian binary blob starting with the magic bytes 0xFE 0x01. It was introduced with MySQL 1.0 in 1995 and used by every storage engine - MyISAM and InnoDB alike - through MySQL 5.7 and MariaDB. MySQL 8.0 (December 2018) removed .frm files entirely, shifting table metadata into InnoDB's transactional data dictionary. MariaDB continued using .frm files after that split.
When row data is lost or corrupted, a surviving .frm file can be inspected with the mysqlfrm diagnostic utility to reconstruct the CREATE TABLE statement and recover the column layout.
Security & safety
RISK: LOWA .frm file is passive binary table metadata - it contains no executable code and is safe to handle. The practical risks are data-recovery ones, not malware: a .frm restored into the wrong MySQL version can fail or corrupt the dictionary, and a lone .frm without its .MYD/.ibd cannot return your rows. Always work on copies, match the original server version, and keep the companion data files together.
Format details
in a nutshell- Visual Basic Form file - Source file describing a form's layout and controls in VB6 and earlier (plain text).
- FormFlow Form - Electronic form document created by the legacy JetForm/FormFlow software.
- Adobe FrameMaker (legacy) - Older FrameMaker installations used .frm for some form/template resources.
Programs that open FRM files
Technical details
deep spec| File structure | Proprietary little-endian binary blob; no compression or encryption |
| Magic bytes | 0xFE 0x01 at offset 0 (version-dependent binary header; no stable ASCII signature) |
| Content | Column definitions (names, types, lengths, defaults), index/key metadata, and table options - schema only, never row data |
| Typical file size | 1 KB - 50 KB per table; grows with column and index count |
| MIME type | application/octet-stream |
| One file per table | Each table gets its own .frm file named after the table, stored in the schema's subdirectory of the MySQL data directory |
| MyISAM companions | .MYD (row data) and .MYI (index data) - all three required for full MyISAM table access |
| InnoDB companion | .ibd tablespace file - the .frm held the schema while .ibd held data and indexes |
| Engine coverage | Written by all storage engines in MySQL 3.x - 5.7: MyISAM, InnoDB, MEMORY, CSV, ARCHIVE, and others |
| Removed in | MySQL 8.0 (December 2018): metadata moved into the InnoDB transactional data dictionary; no .frm files created or read |
| Still used by | MariaDB continued generating .frm files after the MySQL 8.0 split |
| Recovery utility | mysqlfrm (MySQL Utilities) reads a standalone .frm to reconstruct the CREATE TABLE DDL statement |
| Developer | MySQL AB (original); Oracle Corporation (since 2010 acquisition) |
| Operating systems | Cross-platform: Linux, Windows, macOS, FreeBSD - anywhere MySQL or MariaDB ran |
| Released | 1995 (MySQL 1.0, used by ISAM/MyISAM/InnoDB through MySQL 5.7) |
| Latest version | Last used in MySQL 5.7 / MariaDB; removed from MySQL 8.0 (December 2018) |
| Specification | dev.mysql.com |
FRM conversions
Community Q&A
asked by usersNo questions yet - be the first to ask about FRM files.