Noita Run Stats


This extension provides an action that watches for Noita to create a new stats file, which occurs on death.
When that new file created, it is then read and parsed for some details about your run.

I whipped this up with no C# experience, and minimal programming knowledge overall - if there are issues or improvements that could be made, please let me know!

Import “Code”

Download the .sb file, and use it to import the extension.


In click the Import button in the top menu. Drag the .sb file into the Import String field.

Additional installation steps

First, you will need to create a File/Folder watcher that watches the sessions folder for Noita.

  1. In Streamerbot Navigate to the Settings → File/Folder Watcher
  2. Right Click and select “Add”
  3. In the window that appears, you will need to set the Folder and filter accordingly, while leaving the checkboxes alone:
  • Folder: C:\Users[YourUsername]\AppData\LocalLow\Nolla_Games_Noita\save00\stats\sessions
  • Filter: “*_stats.xml”

Afterwards, you will then need to update the Action’s triggers to ensure the action runs when each run ends.

  1. Navigate to the Actions tab
  2. In the actions list, find the “Noita” group and click the “Noita Post-Death Run Stats” action
  3. Under Triggers, right click the first “Core > File/Folder Watcher” and click “Edit Trigger”
  4. In the window that will pop up, click the dropdown and select the Watcher that you just created, then click Ok
  5. Repeat steps 3 and 4 for the second trigger


There are a few settings you can configure to change the behavior of the C# code, which can be found in the “Settings to adjust behavior - Edit as needed” folder in Sub-Actions.

useGlobals (Default: False)

Set this argument to “True” if you want to output the values listed below as Persistent Global Variables.
This allows you to make use of the values at times other than when this action is run.

replaceName (Default: True)

If there is no enemy name provided in the death stats, the name is set to “Minä”… And to be honest? You know it is true.

cleanKilledWith (Default: True)

Removes "damage from materials: " from the “killed_with” value, as SOME materials you can die to will include this.
In my testing this is only for acid, lava, poison, and toxic gas… but I haven’t seen all the things.


These are the values that are parsed from Noita’s stat file:

Value Description
noitaEnemiesKilled Number of enemies that you killed
noitaGoldCollected Total amount of gold
noitaKicks Number of times you’ve kicked your little tootsies
noitaKilledByTmp Who killed you and with what, shown as “Heikko haulikkohiisi | projectile”
noitaKilledBy Who killed you - says “Minä” (you) if not found
noitaKilledWith What you were killed with, removes “damage from material:” where it might appear
noitaPlacesVisited Number of biomes you visited
noitaPlaytime How long your run lasted, in H:MM:SS format
noitaProjectilesShot Number of projectiles you’ve fired off
noitaStreaks How many times you’ve won a run
noitaWandsEdited Number of wands you have edited through your run
noitaWorldSeed Seed for the last run’s world
noitaDead Boolean for whether or not you died.

I haven’t been able to actually test the streaks output - it has always listed “0” for me, but I have yet to win a run

I’ve included a sub-action to send a message to chat with most of the values listed above.
This can be found, and edited as you wish, in the “Sub-actions that make use of parsed data - Edit as needed” group.
This message makes use of arguments, rather than global variables- if you enable Global Variables, you’ll need to adjust this message.

1 Like

I was finally able to test this out.

Instructions were straight forward. Looks like the stock screenshot of the import screen was used. Personally I’d like to see a screenshot of the actual import showing the Action’s name being imported, but not a deal breaker.

My biggest concern is the Twitch message. It contains a lot of info and the service does have a 500 character limit on chat messages. However, the end user is able to edit that as they see fit, so again, not a deal breaker.

Nice job on the submission =)

1 Like

Thank you!

Does anything else need to be done on my end for this to be listed publicly?