Linker Map Viewer Online
Drop a linker .map file to see where your FLASH and RAM go: region bars, the biggest object files and symbols, and sortable tables of sections, libraries, symbols and discarded sections. No install, no account and no upload.
Linker Map Viewer & Map File Analyzer for VS Code and Cursor, free
- Opens a .map file from GNU ld, LLVM lld, IAR or Keil with a click, with region bars that equal the memory usage ld prints.
- A treemap, and a compare of two builds: the change of every region, section, object file and symbol, biggest first.
- Double-click a symbol or object file to open its source file at the definition.
Optional Zovo Pro, USD 19 once: size reports, size history of a folder of builds and JSON export. 3 free tries for each.
Drop a .map file here
or
Linker maps from GNU ld (gcc, arm-none-eabi, ESP-IDF, Zephyr, Pico SDK), LLVM lld (clang, Rust), IAR ILINK and Keil armlink, any size.
Memory regions
Biggest object files
| Object file | Size |
|---|
Biggest symbols
| Symbol | Size |
|---|
Open this in VS Code or Cursor
This page runs the parser of the free Linker Map Viewer extension. In VS Code and Cursor it also draws a treemap, compares the map of an older build with this one, opens the source file of a symbol with a double-click, and reads the MEMORY block of a linker script next to an lld map by itself.
Free, MIT license. About Linker Map Viewer for VS Code.
Zovo Pro
Size reports, size history of many builds and JSON export. Zovo Pro, USD 19 once.
In the Linker Map Viewer extension, Zovo Pro writes a Markdown size report for a pull request (region use, the 20 biggest object files and symbols, and what changed against an older map), a size history table of a folder of build maps, and the whole map as one JSON file for your own scripts or CI checks. Each Pro tool works 3 times for free. One payment covers the Pro tools in 22 Zovo extensions. Everything that is free stays free.
After a card payment you get a key on the page. With GitHub Sponsors you sign in from the extension. Details on the Zovo Pro page.
Related tools
- ELF Viewer & PE Viewer on the VS Code Marketplace (also on Open VSX). Shows headers, sections and imports of ELF, PE and Mach-O files.
- Hex Viewer & Binary Viewer. Opens firmware and binary files of any size in VS Code, with find and a data inspector.
- Intel HEX Viewer. Opens firmware .hex files in VS Code.
- Run C++ and C Code. Compiles and runs the current C or C++ file with gcc or clang.
- Hex Viewer Online, free in your browser.
- SQLite Viewer Online, free in your browser.
- CSV Viewer Online, free in your browser.
Questions
Is my map file uploaded anywhere?
No. The page reads the file inside this tab, in 4 MB steps in a background worker. Its Content Security Policy sets connect-src to none, so the page cannot send your map anywhere. Open the Network tab of your browser tools and you will see no request when a map opens.
Which linkers does it read?
GNU ld (gcc, arm-none-eabi-gcc, ESP-IDF, Zephyr, the Raspberry Pi Pico SDK, STM32CubeIDE, avr-gcc, RISC-V), LLVM lld (clang and Rust embedded), IAR ILINK 7.x and 8.x, and Arm Compiler armlink 5 and 6 from Keil. The format is found from the first lines of the file. A .js.map source map is recognized and refused.
Do the numbers match the linker?
For GNU ld maps the region totals equal what ld prints with its print-memory-usage option. Discarded input sections get their own tab and are never counted in a region. GNU ld maps list global symbols without sizes, so a size marked ~ runs from the symbol to the next one in the same input section.
My lld or Rust map shows no memory regions. Why?
lld maps do not list the MEMORY block. Click Add a linker script and pick the memory.x or .ld file of the build: the page reads its MEMORY block and draws the region bars. You can also drop both files at once.
How do I make my linker write a map?
With gcc or clang add -Wl,-Map=firmware.map to the link step (add the cref option too for the list of files that use each symbol). With CMake use target_link_options(app PRIVATE -Wl,-Map=firmware.map). IAR and Keil have a map option in the linker settings. ESP-IDF, Zephyr, the Pico SDK and PlatformIO already write one into the build folder.
How big a map can it open?
There is no size limit of its own. The map is read in slices and parsed line by line in a worker, and the table shows 500 rows at a time with Show more rows, so a map of many MB with a million symbols does not freeze the tab.
Does it work offline?
Yes. After the first visit the page keeps a copy of its own files, so it opens maps with no connection.
What is free and what is Zovo Pro?
Everything on this page is free, and so are the tables, the treemap and the compare of two builds in the VS Code extension. A size report for pull requests, the size history of a folder of builds and the export of the whole map as JSON are Zovo Pro in the extension, with 3 free tries each. One USD 19 payment covers the Pro tools in every Zovo extension.