CC String Merge

v0.1.0

Faster Sim menus and much faster loading in The Sims 3 when you have thousands of CC files. One string table per language instead of tens of thousands, with a full undo.

Clicking your own Sim, before and after (with the default strings package). The timer runs from the mouse press until the menu is on screen, so it is a little higher than the measured times below.

Clicking a Sim takes a moment when you have thousands of CC files? That comes from the string tables, the names and descriptions of your CC. Every CC object brings its own, usually 23 of them, one per language, and the Sim's pie menu looks up thousands of names on every click.

CC String Merge moves all those strings into one table per language. The game finds strings by their key, not by the table they are in, so no text changes in game.

Without the tool

Sofa
Bed
Lamp
Rug
Desk
Plant

Every CC file brings its own string tables, usually 23. With 6,282 files that was about 150,000 tables to search.

With CC String Merge

Sofa
Bed
Lamp
Rug
Desk
Plant
Strings package

The same files, minus their strings, plus one strings package with one table per language. The text in game stays the same, and a name lookup takes 0.7 µs instead of 52 µs.

How much faster

The pie menu of your own Sim: Smart Phone, Jetpack, NRaas, Change Outfit, Go Jogging and more.

Your own Sim's menu

Clicking your own Sim

Your own Sim's menu has about 600 entries. About five times faster with the default, six to eight times with merge mode.

  • No tool 949–1,200 ms
  • Strings package 207–211 ms
  • Merge mode 142 ms

Clicking another Sim

Over four times faster with the default, about six times with merge mode.

  • No tool 590–633 ms
  • Strings package 135–138 ms
  • Merge mode 102 ms

Loading the save

From over three and a half minutes to half a minute with merge mode.

  • No tool 219–225 s
  • Strings package 194 s
  • Merge mode 29–31 s

Game start to main menu

Almost four times sooner with merge mode.

  • No tool 106–108 s
  • Strings package 78 s
  • Merge mode 29 s
Shorter is better. One PC, one save, 6,282 CC packages from ATS3 and MTS, each setup started two or three times; where the runs differed, the bar shows the range. The menu times are the script work that builds the menu.

How to use it

  1. Close The Sims 3. The tool refuses to run while the game is open.
  2. Decide whether to use merge mode. Pick one:
    • Merge mode off (the default, recommended if you like adding and removing CC one file at a time). The strings are merged, your CC files stay as they are, and you can still delete a single item by deleting its file.
    • Merge mode on (recommended for the best performance). The CC packages are merged as well, so the game loads much faster with thousands of files, but you can no longer remove a single item by deleting its file. More under "Merge mode, for thousands of CC files" below.
  3. Download CCStringMerge.exe and start it. For merge mode off, double-click it. For merge mode on, start it as CCStringMerge.exe --merge instead (for example from a shortcut with --merge added to its target). It uses Documents\Electronic Arts\The Sims 3\Mods\Packages by itself. Or drop any folder of CC onto it.
  4. Type Y and press Enter. It first shows what it would change; nothing happens before you say yes.

Windows says "Windows protected your PC"? Click More info, then Run anyway. The exe is new and not code-signed, so Windows doesn't know it yet.

CCStringMerge.exe
SmellyMods CC String Merge 0.1.0

Reading C:\Users\You\Documents\Electronic Arts\The Sims 3\Mods\Packages\CC ...
  reading 6282 / 6282

Folder: C:\Users\You\Documents\Electronic Arts\The Sims 3\Mods\Packages\CC
Mode:   one strings package

Packages to rewrite:      6232 (3419.7 MB)
Packages with only strings: 0 (moved to the backup, their strings live on in CCStringMerge_Strings.package)
Packages without strings: 42 (not touched)
String tables:            150203 -> 23 (one per language)
Strings:                  295885
Same string in two packages: 33087 (kept once)
Same key, different text: 2976 (the first one in name order is kept)
Same key, one text empty: 103 (the real text is kept)
First it reads your CC and shows what it would change, here for the 6,282 packages measured above. Nothing changes before you type Y.
CCStringMerge.exe
Originals go to: C:\Users\You\Documents\Electronic Arts\The Sims 3\CCStringMerge backups
Type Y and press Enter to go ahead: Y
  writing 6232 / 6232
  checking every resource and string against the backup ...

Done. Backup and report: C:\Users\You\Documents\Electronic Arts\The Sims 3\CCStringMerge backups\2026-11-06_132134
To undo, drop that folder onto the program.

Press Enter to close.
After Y it writes, checks everything against the backup and tells you where the backup is.

That's all. Start the game as usual.

The tool's own safety net. The originals go into a backup folder outside Mods, and nothing is deleted. After the run the tool checks every resource and every string against the backup, and on any mismatch it puts everything back by itself.

New CC later? It works right away, just without the speed-up. Run the tool again and it adds the new strings. Removed CC? Its strings stay in the strings package. That does no harm.

Undo

Drop the run's backup folder (The Sims 3\CCStringMerge backups\<date>) onto CCStringMerge.exe. Your Mods folder is back as it was.

CCStringMerge.exe
SmellyMods CC String Merge 0.1.0

Undoing the run in C:\Users\You\Documents\Electronic Arts\The Sims 3\CCStringMerge backups\2026-11-06_132134
Type Y and press Enter to undo: Y
Undone.

Press Enter to close.

More details

Merge mode, for thousands of CC files

CCStringMerge.exe --merge also merges all CC packages into a few big CCStringMerge_Merged_NNN.package files (1 GB each; change it with --part-size <MB>). The game then has fewer files to open too. If two packages hold the same resource, the first one in name order is kept, and the report lists every case.

Is merge mode worth it?

The strings package already fixes the slow menu. Merge mode fixes loading: with thousands of CC files it cut loading the save from over three minutes to half a minute, and the main menu came up almost four times sooner.

The cost: you can no longer remove one item by deleting its file (undo the run, delete the file, run the tool again). With a few hundred CC files the default is enough; with thousands, merge mode saves minutes on every start.

What exactly it changes
  • Takes the string tables out of every CC package and writes them into one CCStringMerge_Strings.package in that folder. Every other resource is copied byte for byte, and your files keep their names and folders, so you can still remove one item by deleting its file.
  • Moves the originals into a backup folder outside Mods (The Sims 3\CCStringMerge backups\<date>), so the game never loads them twice. Nothing is deleted.
  • Checks every resource and every string against the backup afterwards. On any mismatch it puts everything back by itself.
What it leaves alone
  • Script mods (packages with a .dll assembly inside, such as NRaas), packages from other games, and anything that does not read cleanly. The report lists each one and the reason.
  • .sims3pack files and the launcher's DCCache: only .package files in the folder you give it are read.
All measurements

One PC, one save, 6,282 CC packages from ATS3 and MTS (3.4 GB, about 150,000 string tables), each setup started two or three times. Loading times are wall-clock. The menu times are the script work that builds the menu: for another Sim the median over the other Sims on the lot, for your own Sim its own menu with 608 entries.

No tool Strings package (default) Merge mode
Your own Sim's pie menu 949-1,200 ms 207-211 ms 142 ms
Another Sim's pie menu 590-633 ms 135-138 ms 102 ms
One string lookup 52 µs 0.7 µs 0.7 µs
Game start to main menu 106-108 s 78 s 29 s
Loading the save 219-225 s 194 s 29-31 s
Game memory (virtual, peak) 2.7 GB 2.5 GB 2.5-2.8 GB
Files in Mods 6,282 6,283 13

Every string was still found in all three setups (3,000 sampled), and undo gave back all 6,282 files byte for byte.

Undo in detail

Drop the run's backup folder onto CCStringMerge.exe, or run CCStringMerge.exe --undo "<that folder>". Undo newer runs before older ones.

Before changing anything, the undo checks that the files it wrote are still unchanged. If you edited or replaced one since then, it stops and changes nothing. With --force it moves those files to <backup>\changed-since and undoes anyway. If you deleted a CC file since then, the undo doesn't bring it back; its original stays in the backup.

All options
CCStringMerge.exe [folder] [--merge] [--part-size MB] [--dry-run] [--undo RUN_FOLDER] [--force] [--yes]

--dry-run shows the report and changes nothing. --yes skips the question and the "press Enter" at the end.

Windows and antivirus warnings, checksum

The exe is not code-signed. Windows SmartScreen may say "Windows protected your PC": click More info, then Run anyway. Some antivirus programs flag every PyInstaller exe at first. If you prefer, run the source instead (python ccstringmerge.py, Python 3.8 or newer, no other packages needed).

To make sure your download is the file we built, check its SHA-256 against the checksum in the download box above.

Please link, don't re-upload

Share the link to this page instead of uploading the exe elsewhere. That way everyone gets fixes and can check the checksum.

Changelog

  1. 0.1.0

    • First public release.
    • Default mode moves the string tables of all CC packages into one strings package; --merge also merges the packages into 1 GB parts.
    • Backup outside Mods, a check of every resource and string after each run, automatic rollback on any mismatch, undo by dropping the backup folder onto the exe.