Modlist UI


Display and share active mods in-game or on stream in one interface. Search, sort, and pin, plus copy tools to export modpack dependencies.

Utilities
a day ago
2.0 - 2.1
620

FAQ

Where are the mod thumbnails?

Thumbnails are disabled by default, to ensure Modlist UI is not preventing Factorio from loading. As the default, it doubles as a failsafe should you ever need to reset your mod-settings.

To enable thumbnails: Settings --> Mod Settings --> Tab: Startup --> Modlist UI: [Version Matched] or [Latest Version]

Thumbnail mode Behaviour
[No Thumbnails] Default. Failsafe. Loads no thumbnail sprites.
[Version Matched] Uses the latest thumbnail metadata matching your Factorio branch.
[Latest Version] Uses the latest thumbnail metadata available, cross-branch.

Startup crash: missing thumbnail / wrong dimensions / out of bounds

  1. Manually download the latest version of Modlist UI for your Factorio branch (2.0 / 2.1), and extract its [factorio_modportal_blob.lua] file.
  2. Manually download the latest version of the problematic mod mentioned in the crash-error, and extract its [thumbnail.jpg]
  3. Manually replace both files in their respective installed mods' folders with the extracted ones. Repeat step 2 and 3 as necessary.

Also possible: A mod updates its thumbnail ahead of Modlist UI's periodic scrape & [factorio_modportal_blob.lua] update release.
Should the next Modlist UI update not fix this and issues persist, I want to hear about it! Make a thread.


What is this “blob” / [factorio_modportal_blob.lua]?

A user's current active modlist only provides a list of slug/name, i.e. [modlist-ui], and version. Anything more requires external provision.

In Modlist UI's folder, you will find [factorio_modportal_blob.lua]. It is a large metadata file generated by scraping all 7,200+ [2.0] and [2.1] mods' metadata on the Factorio Mod Portal, providing Modlist UI richer information: titles, authors, descriptions, and crucially: thumbnail availability and dimensions.

Displaying thumbnails requires writing a graphic to the spritesheet during game-startup and then referencing it in game. Resizing/cropping/centering sprites requires knowing its dimensions. Not every mod has a thumbnail and no dimension size is standardized/agreed upon, except their filename: [thumbnail.jpg].

The game will crash during startup/runtime if we:
- Attempt to reference a thumbnail/file that does not exist. Some mods just don't have a thumbnail. Boo.
- Attempt to resize/crop an image outside of its native dimensions.
Since we cannot read/query the metadata of a file on a user's PC directly via Lua we provide this information via the [factorio_modportal_blob.lua] and are trusting it to be up-to-date.

If you do not want any startup risk from thumbnails, use the default startup mod-setting: [No thumbnails]
Modlist UI will still use the blob’s text metadata, just without the pretty pictures.


Why are blob updates so periodic?

Update frequency is a compromise. Mods generally don't change their title, description or thumbnail very often, but 10+ new mods appear every day. Updating Modlist UI that often would be asinine for both user and myself. Fortnightly updates with a bundled up-to-date scraped blob are boring, polite, and good enough.


What is Modpack Assembler / What does the Modpack Link do?

Modlist UI's Modpack Link export encodes your active modlist as a compatible browser-URL link to Luzifer Senpai's Modpack Assembler, so you can use it to visualize or share your modpack to others in the same style of Factorio's Mod Portal.

To use it: Open Modlist UI --> Modlist Export Drawer --> Modpack Link --> Copy the entire link into your browser.

The link carries your currently active mods and their installed versions, including Factorio's built-in mods and Modlist UI itself. Search filters and pinned mods do not limit the export.

You can set a Modpack Title in Modlist UI's Per-Player Settings Drawer --> Export Defaults. Leaving it blank derives a title from Modpack Name/Slug, i.e. [my-modpack] becomes My Modpack.


What is MLUI1? Can I make my own modpack importer/visualizer?

Yes! If you have the programming/scripting knowhow, you can pretty easily make use of the MLUI1 header/encoder. The default link has this structure:

https://modpack-assembler.luzifersenpai.de/#modlist=MLUI1:<encoded payload>

MLUI1: identifies Modlist UI's version 1 share format. Everything after that prefix is a JSON manifest encoded using Factorio's helpers.encode_string(): Deflate compression, then Base64 encoding.

To decode:

  1. Extract the value after #modlist=, or accept a standalone MLUI1:... code.
  2. Check and remove the literal MLUI1: prefix.
  3. Base64-decode the remaining payload, then inflate it.
  4. Read the result as UTF-8 JSON and validate its format and schema.

Inside Factorio, step 3 is handled by helpers.decode_string(). There is no additional blueprint-string 0 prefix to remove.

An example of the decoded JSON, shown with indentation for readability:

{
  "format": "modlist-ui",
  "schema": 1,
  "title": "My Modpack",
  "factorio_version": "2.1.24",
  "mods": [
    {
      "name": "base",
      "version": "2.1.24",
      "enabled": true
    },
    {
      "name": "modlist-ui",
      "version": "2026.10.31",
      "enabled": true
    }
  ]
}

Versions above are illustrative.

Field Meaning
format Format identifier. Currently "modlist-ui".
schema JSON schema version. Currently the number 1.
title User-entered or automatically derived modpack title.
factorio_version Full exporting game version, including patch version.
mods Array of active mods.
mods[].name Internal mod name/slug, i.e. "modlist-ui".
mods[].version Installed mod version, as a string.
mods[].enabled Boolean. Currently always true, since only active mods are exported.

Author, description, and modpack package-version settings are not included. Those belong to the separate info.json export. The JSON export provides the same manifest used by the Modpack Link, without compression or the MLUI1: prefix.

The next obvious step is to then use your own importer URL prefix, which you can configure in the Per-Player Settings Drawer under Export Defaults --> Modpack Assembler URL. Set your own URL prefix, including its fragment, i.e. https://example.com/#modlist=. Modlist UI appends the complete MLUI1:... code directly. Leave the setting blank to output only the code.

Preserve Base64 characters such as +, /, and = when reading it; in particular, do not convert + into a space.

Future MLUI2, MLUI3, etc.: These are possible future format identifiers, not formats defined today. Importers should check both the outer prefix and decoded schema, and report unsupported versions clearly. Do not assume that changing the number makes a future payload compatible.