Triage Matrix: ESM / ESP vs ESL Plugin Architecture
| Plugin Type | Engine Index Allocation | Max Unique Records Allowed | Safe to Convert to ESL? | Precondition / Risk |
|---|---|---|---|---|
| Standard ESP / ESM | Occupies one of 254 main load order slots (00 to FD) | 16.7 Million FormIDs (000000 to FFFFFF) | N/A (Baseline) | Count towards hard 254 limit |
| ESL Flagged ESP (ESP-FE) | All mapped into single slot FE (up to 4,096 ESLs simultaneously) | Exactly 2,048 FormIDs (800 to FFF) | YES | New records must not exceed FormID range 800-FFF |
| Plugin with Cell Overrides | Standard slot | Varies | NO / CAUTION | Adding temporary child refs in cell edits causes persistent ref bugs |
| Plugin with FaceGen / Scripts | Standard slot | Varies | YES (With Care) | Renaming FormIDs breaks external voice and face tint filenames |
In games built on Bethesda's Creation Engine (such as Skyrim SE and Fallout 4), plugins have historically been constrained by an 8-bit hex index limit: exactly 254 active full plugins (from index 00 to FD). Once slot 255 (FE) was designated for light plugins, the community unlocked the ability to install thousands of mods—provided they are converted to ESL correctly.
Phase 1: Identifying Safe ESL Candidates in xEdit
- Launch xEdit (SSEEdit or FO4Edit) and load your complete mod list.
- In the left panel, right-click any mod or empty space and select Apply Script.
- Choose the official built-in script:
Find ESP plugins which could be turned into ESL. - Click OK. The script parses every record in your load order and categorizes them into two outcomes:
- Can be turned into ESL by adding ESL flag: The plugin contains new records, but all FormIDs are already within the allowed range (
0x800to0xFFF), or it contains purely override records. - Can be turned into ESL by compacting FormIDs first: The plugin contains fewer than 2,048 new records, but their FormIDs exceed
0xFFF. It requires compacting.
- Can be turned into ESL by adding ESL flag: The plugin contains new records, but all FormIDs are already within the allowed range (
Phase 2: Compacting FormIDs and Applying the ESL Flag
For Plugins Requiring No Compacting:
- Click the target plugin in xEdit.
- Expand the Record Header in the right pane.
- Double-click the Record Flags field.
- Check the box labeled ESL.
- Press
Ctrl + Sto save. You just freed up a full load order slot!
For Plugins Requiring Compacting (Strict Precautions):
- Never compact a mod mid-playthrough on an active savegame; this invalidates internal script references.
- Right-click the plugin in xEdit and select Compact FormIDs for ESL.
- Accept the warning. xEdit renumbers all newly defined records to fit strictly between
00000800and00000FFF. - In Record Flags, check ESL.
- Update Loose Asset Filenames: If the mod contained voice files (
.fuz) or NPC facegen files (.nif/.dds), their filenames were named after the old FormIDs. Use an automated tool (such asCathedral Assets OptimizerorFaceGenFixer) to rename assets to match the newly compacted FormIDs.
Verification Checklist
- Launch Wrye Bash or your mod manager (MO2 / Vortex).
- Confirm the plugin count under "Active ESM+ESP" is strictly under 254.
- Verify the newly flagged plugin displays with a feather or "Light" badge occupying the
FE:xxxaddress space. - Load the game and verify all items, quests, and NPC textures from the mod render without crashing.