Metin2 MSM Extractor
Upload your Metin2 .msm character files and search for costumes, armors, or hairstyles by keyword. Extract matching HairData and ShapeData blocks — download per character or as a zip.
How to Use Metin2 MSM Extractor
- Click "Browse" or drag and drop one or more .msm files into the upload zone — you can upload all eight character files at once.
- The tool immediately parses each file and shows a summary: detected character name, file size, and total number of HairData + ShapeData blocks found.
- Type your search keyword in the input field — this can be a partial filename (hair_11), a full texture name (costume_set_01.dds), a model basename, or a numeric index (5001).
- Press Enter or click Search. Results appear grouped by character file, each showing the matching block with labeled fields (HairIndex/ShapeIndex, Model, SourceSkin, TargetSkin) and the keyword highlighted in yellow.
- Use the Hair Only / Shape Only filter buttons to narrow results, and the Sort options (Index, Model, TargetSkin) to reorder them.
- Click "Copy block" on any card to copy the raw block text, "Copy all" to copy all matching blocks for a character, or "Download" to save a formatted .txt file per character. Use "Download All (.zip)" to get all characters in a single archive.
About Metin2 MSM Extractor
MSM files are the character model scripts that Metin2 uses to define which hairstyles and shape variants (costumes, armors, and class-specific models) are available for each playable character. Each character class has its own file — assassin_m.msm, assassin_w.msm, warrior_m.msm, warrior_w.msm, sura_m.msm, sura_w.msm, shaman_m.msm, and shaman_w.msm — and each file can contain dozens or even hundreds of individual entries.
What are HairData and ShapeData?
A Metin2 MSM file is split into two major sections. The HairData section lists all hairstyle variants for that character class — each entry records a HairIndex (the numeric ID referenced by the client), a Model (.gr2 mesh file), a SourceSkin (.dds texture), and a TargetSkin (the runtime skin overlay applied by the client). The ShapeData section works the same way but covers costume sets, armor skins, and other shape-level visual overrides. Both sections use the same four-field structure, just with different internal identifiers.
Why private server admins need this tool
When you add a new costume or hairstyle pack to your server, you typically receive a set of .gr2 and .dds files along with instructions on which HairIndex or ShapeIndex to assign them. You then need to insert the corresponding entry into the correct MSM file for each character class that supports the new item. Before inserting, you need to know whether that index is already in use, which existing entries reference the same mesh or texture files, and whether your client folder paths are consistent across all eight character files.
Doing this manually requires opening each .msm file in a text editor, scrolling through hundreds of entries, and performing repeated Ctrl+F searches — one per keyword, one per file. For costume packs that affect all eight character classes, that is up to eight separate searches just to check a single index.
How the MSM Extractor works
Upload one or more .msm files directly in your browser — no server upload, all processing happens locally in JavaScript. The tool parses each file using brace-depth tracking (not fragile regex) to reliably extract every numbered sub-group from both the HairData and ShapeData sections. Type any keyword — a partial filename like hair_11, a texture name like costume_set_01.dds, or a numeric index like 5001 — and the tool instantly shows every matching block across all uploaded files, grouped by character.
Each result card displays the HairIndex or ShapeIndex, the Model filename, SourceSkin, and TargetSkin as labeled fields (basenames only, without the full directory path), the matched keyword highlighted in yellow, and a toggle to reveal the raw block text for direct copy-paste. You can filter results to Hair Only or Shape Only, sort by numeric index, model name, or target skin, and download the results for each character as a .txt file or all characters at once as a .zip archive.
Who this tool is for
Private server developers who install costume packs, hairstyle packs, or custom armor sets. Anyone auditing MSM files for duplicate or conflicting index assignments. Server admins migrating content between servers who need to verify that all required entries exist in the target MSM files.
Common Use Cases
Frequently Asked Questions
What is an MSM file in Metin2?
An MSM (Model Script for Metin2) file is a text-based script that the game client reads to know which 3D models and textures to use for each character appearance variant. There is one file per character class and gender, covering hairstyles (HairData section) and costume/armor shapes (ShapeData section).
Does this tool upload my MSM files to a server?
No. All parsing happens entirely in your browser using the FileReader API and plain JavaScript. Your files are never sent anywhere. This is intentional — MSM files often contain proprietary client content that server admins want to keep private.
Why does the tool use brace-depth tracking instead of regex?
Simple regex patterns that match from the group header to the closing brace can fail when nested braces appear inside a block, or when blocks run across multiple lines with unusual whitespace. Brace-depth tracking counts opening and closing braces as it reads the file character by character, so it always finds the correct closing brace regardless of what is inside the block.
What does HairIndex / ShapeIndex mean?
The HairIndex and ShapeIndex are numeric IDs that the game client uses to look up which model and skin to display. When a player equips a hairstyle with a certain item VNUM, the server tells the client a HairIndex value, and the client uses that to find the correct .gr2 and .dds files in the MSM file for that character class.
Can I search across all eight character files at once?
Yes. Upload all eight .msm files together (or one by one — uploaded files persist until you remove them), then enter your keyword. Results are grouped by character file so you can see at a glance which classes have matching entries and which do not.
What format does the downloaded .txt file use?
The download is formatted as a plain text file with comment headers (lines starting with ;) showing the source filename, keyword, and extraction date, followed by the matching blocks separated by blank lines, organized into HairData and ShapeData sections. This format is compatible with manual copy-paste back into an MSM file.
Related Metin2 Tools
Metin2 Dungeon Quest Generator
Generate ready-to-use Metin2 dungeon quest Lua files instantly. Configure floors, mobs, bosses, timers and download clean quest + lib files. No signup required.
Metin2 Item Proto Editor
Edit Metin2 item_proto.txt in your browser with a full spreadsheet interface, smart type/subtype dropdowns, wear slot checkboxes, and export to TXT or SQL. No download needed.
Metin2 Mob Proto Editor
Edit Metin2 mob_proto.txt online with a full table editor. Smart dropdowns for type, rank, battle type, resist sliders, immune flags — export to TXT or SQL instantly.