If you have ever downloaded a folder full of module files from a keygen music archive or a demoscene collection, you have probably noticed something frustrating. The files are named track01.mod or untitled.xm, and Windows shows them as generic audio files with no track information. You open one in a media player and the title bar simply reads “MOD” or “XM” with no clue about the actual song name. I ran into this exact problem when I started archiving tracker music a few years ago, and it sent me down a rabbit hole of header parsing and hex editors.
This guide will walk you through how to read song titles and artist credits inside module files using both GUI tools and command-line methods. Whether you are organizing a personal collection of keygen music or trying to catalog a demoscene production archive, you will find practical steps that work on Windows, macOS, and Linux. By the end, you will know exactly where the metadata lives in each format and which tool to reach for based on your workflow.
IN THIS ENTRYTable of Contents
- 1What Are Module Files (.mod, .xm, .s3m, .it)?
- 2Amiga MOD files
- 3FastTracker II XM format
- 4Scream Tracker 3 S3M
- 5Impulse Tracker IT format
- 6Where Song Titles and Artist Credits Are Stored in Module Files
- 7How to Read Module File Metadata with OpenMPT
- 8Step 1: Download and install OpenMPT
- 9Step 2: Open your module file
- 10Step 3: Locate the title bar
- 11Step 4: Access the comments and metadata dialog
- 12Extracting Module Metadata from the Command Line
- 13VLC command line extraction
- 14Using xxd to inspect raw headers
- 15Python scripts for batch parsing
- 16Using ModPlug and Other GUI Tools to View Module File Tags
- 17Automating Batch Metadata Extraction from Module Files
- 18Common Issues When Reading Module File Metadata
- 19Frequently Asked Questions About Module File Metadata
- 20How do I view song credits in a module file?
- 21Where is the song title stored in a MOD file?
- 22Can I extract module file metadata from the command line?
- 23What tools work for batch metadata extraction?
- 24Why is the song title empty in my module file?
- 25Are artist credits standardized across module formats?
- 26Final Thoughts on Module File Metadata Extraction
What Are Module Files (.mod, .xm, .s3m, .it)?
Module files are a family of music file formats originating from the Amiga computer in the late 1980s. Unlike MP3 or WAV files, modules contain both the instrument samples and the pattern data that tells the player how to sequence those samples. This is why a 4 MB MOD file can contain a full song with drums, bass, and lead parts, while a 4 MB MP3 might only hold a minute of compressed audio.
The four formats you will encounter most often are MOD, XM, S3M, and IT. Each one comes from a different tracker software, and each stores metadata in slightly different locations within the file header.
Amiga MOD files
The original MOD format came from Karsten Obarski’s Ultimate Soundtracker and was popularized by ProTracker on the Amiga. A MOD file stores the song title in the first 20 bytes of the file header. If the artist filled in their credits in the tracker software, that information usually appears later in the file at offset 1080 or further into the sample header area.
FastTracker II XM format
XM files came from FastTracker II on the DOS/Windows platform. They use a more modern header structure with the song title stored in a 20-byte field at offset 17. XM files also support a separate “message” field that often contains artist credits and contact information.
Scream Tracker 3 S3M
S3M files were created by Scream Tracker 3 by Future Crew. The title lives in a 28-byte field at offset 0, and the format uses a signature “SCRM” early in the file to identify itself. S3M files were widely used in DOS games and BBS distributions.
Impulse Tracker IT format
IT files were developed by Impulse Tracker by Jeffrey Lim as a spiritual successor to S3M. The song title sits in a 26-byte field, and IT files support extended metadata fields that can include artist name, album, track number, and even custom comments.
Where Song Titles and Artist Credits Are Stored in Module Files
Every module format places its song title near the very beginning of the file, but the exact byte offset varies. Here is the breakdown that I use whenever I am parsing these files manually or troubleshooting why a tool is not reading the title correctly.
In a MOD file, the title takes up bytes 0 through 19. If you open the file in a hex editor, those first 20 bytes will spell out the song name in ASCII, often followed by null padding. For artist credits, you need to check the sample names, which start at offset 20. Some trackers also wrote the artist name into a special “message” section further down the file.
For XM files, the title is at bytes 17 through 36, with the format signature “Extended Module: ” taking up the first 17 bytes. Artist credits in XM are less standardized, but many producers put their handle in the 20-byte message field that follows the header.
S3M files store the song title in the first 28 bytes (offset 0). The signature “SCRM” sits at offset 28, followed by various type and tracker information. Artist credits in S3M files are typically found inside the message text block, which is referenced by an offset pointer in the header.
IT files use a 26-byte title field starting at offset 4. The first four bytes are reserved for the IT signature. IT also has a dedicated “message” field with offsets for artist name, channel name, and a special “initial tempo” comment that some producers used for credits.
How to Read Module File Metadata with OpenMPT
OpenMPT (Open ModPlug Tracker) is the tool I recommend to anyone who wants a graphical interface for inspecting module file metadata. It is free, open source, and runs on Windows. Here is the workflow that I follow when I need to quickly check the title and artist of a file.
Step 1: Download and install OpenMPT
Head to the OpenMPT project page and grab the latest installer. The application is portable, so you can also run it from a ZIP archive without installing if you prefer.
Step 2: Open your module file
Launch OpenMPT and drag your .mod, .xm, .s3m, or .it file into the main window, or use File > Open. The song will load and start playing almost immediately.
Step 3: Locate the title bar
Look at the title bar at the top of the OpenMPT window. It should now display the song name followed by the format in brackets, something like “My Track – XM”. If the title bar shows just “MOD” or “XM”, the file does not have a song title embedded.
Step 4: Access the comments and metadata dialog
Click on View > Comments or press the keyboard shortcut to open the song message dialog. This window shows the full metadata block, including artist credits, sample source information, and any custom text the producer added. For IT files, you may also see structured fields for artist name, album, and track number under the extended metadata tab.
Extracting Module Metadata from the Command Line
GUI tools are great for one-off inspections, but if you are processing hundreds of files, command-line methods save a lot of time. I have used these techniques on Linux servers when building searchable indexes of keygen music collections.
VLC command line extraction
VLC can read module file metadata and print it to the terminal. Run vlc --meta-title filename.mod or use the JSON output flag to dump all available tags. This works on most Unix systems where VLC is installed.
Using xxd to inspect raw headers
For a quick check without any special software, use xxd to view the first 40 bytes of a module file. The song title will appear as ASCII text right at the top. For example, xxd -l 40 somefile.xm will show you the format signature followed by the title.
Python scripts for batch parsing
The most flexible approach is a Python script. Libraries like music-metadata on npm or the mutagen library for Python can parse module file headers and return structured JSON. Here is a minimal example using the music-metadata package:
const mm = require('music-metadata'); mm.parseFile('track.xm').then(meta => console.log(meta.common.title, meta.common.artist));
Using ModPlug and Other GUI Tools to View Module File Tags
OpenMPT is not the only GUI option. If you are on an older system or prefer a lighter player, several alternatives handle module file metadata in their own way.
XMPlay is a tiny Windows player that displays the song title in its window title and reads the message field for additional credits. It is popular in the tracker community because of its small footprint and low latency.
ModPlug Player is the predecessor to OpenMPT and still works for basic metadata viewing. It shows the song title in the playlist and supports reading message fields for S3M and IT files.
Renoise is a commercial tracker that reads all four formats and displays extended metadata fields including artist, album, and genre when present. If you are already using Renoise for music production, it doubles as a useful metadata inspector.
Automating Batch Metadata Extraction from Module Files
When you have thousands of files to process, manual inspection is not realistic. I have built automation pipelines that extract song titles and artist credits from entire directories and write the results to CSV files. Here are the approaches that work best.
The mod-metadata-extractor tool on GitHub copies metadata from module files into the ID3 tags of converted MP3 files. It supports all four formats and runs as a Python script, making it ideal for batch processing on any platform.
For shell-based workflows, a simple for loop combined with xxd or grep can pull titles out of a folder in seconds. The command for f in *.xm; do echo "$f: $(xxd -l 36 -p "$f" | tail -c 40)"; done will print each filename alongside its embedded title.
For serious library management, integrate the extraction step with a tagging workflow using MusicBrainz Picard or Beets. These tools can read module file metadata and apply it to your music library automatically.
Common Issues When Reading Module File Metadata
Even with the right tools, you will occasionally run into files that refuse to display their metadata correctly. Here are the problems I have hit most often and how I solve them.
If the title field is empty, the original producer simply did not fill it in when they saved the file. This is common in old keygen music releases from the 1990s. The only solution is to identify the track by listening and adding the metadata manually.
Encoding issues appear when non-ASCII characters are stored in the title. Some Amiga trackers used extended character sets that do not render correctly in modern editors. Converting the file to UTF-8 or opening it in a hex editor with the correct codepage usually reveals the original text.
Corrupt headers can happen when files are truncated or improperly transferred. If OpenMPT refuses to open a file, try file on Unix to confirm the format, then check the file size against expected values for that format.
Format confusion happens when a file has the wrong extension. A file named track.mod might actually be an XM file with a renamed extension. OpenMPT and VLC usually detect the real format automatically, but command-line tools may need explicit flags.
Frequently Asked Questions About Module File Metadata
How do I view song credits in a module file?
Use OpenMPT on Windows or VLC on any platform. Open the file and check the title bar for the song name, then look at the comments or message field for artist credits.
Where is the song title stored in a MOD file?
The song title is stored in the first 20 bytes of the file header in plain ASCII text. Artist credits are usually found in the message block or in sample names further down the file.
Can I extract module file metadata from the command line?
Yes. Use VLC with the JSON output flag, or write a Python script using libraries like music-metadata or mutagen. Shell commands like xxd also let you inspect raw headers.
What tools work for batch metadata extraction?
The mod-metadata-extractor Python tool handles batch processing across all four formats. You can also write shell loops that combine xxd or ffprobe with grep to build your own pipeline.
Why is the song title empty in my module file?
The original producer left the title field blank when saving. This is common in older keygen music files. You will need to identify the track manually and add the metadata yourself.
Are artist credits standardized across module formats?
No. Each format stores metadata differently, and there is no universal field for artist credits. Producers often use the message field or sample names to store their handle.
Final Thoughts on Module File Metadata Extraction
Reading song titles and artist credits inside module files is a skill that pays off the moment you start building a serious tracker music library. Once you know where the metadata lives in each format and which tool matches your workflow, the whole process becomes routine. I still keep OpenMPT open whenever I am sorting through old keygen music archives, and my Python scripts handle the bulk work for collections over a few hundred files.
If you are new to tracker music, start with a single file in OpenMPT and explore the comments field. Once you are comfortable, try extracting a folder of files from the command line using xxd. From there, automation is the natural next step. The combination of these techniques will give you complete control over your module file metadata in 2026.