View Full Version : Character converter in progress ... herolab to fgu pipeline.
sgtwhy
November 21st, 2025, 22:08
Starfinder 1e Character Sync & Offline Viewer (Proof of Concept)
Hi all,
In my Starfinder (1e) campaign, I’ve been using Herolab for external access and character updates.
But manually syncing those records with Fantasy Grounds Unity (FGU) by hand has been a chore.
Over the past few months, I’ve been experimenting with ways to load exported characters “offline.”
I now have a working proof‑of‑concept that can:
Consistently load and view exported Starfinder characters in a web browser.
Merge updates from Herolab exports into FGU character exports, producing a new file that can be re‑imported back into FGU.
This means you can handle small tweaks (like swapping memorized spells) or bigger changes (leveling up, adding classes, new gear, etc.) without manually re‑entering everything.
Limitations:
Herolab exports don’t include every detail (race choices, class options, etc.), so full imports aren’t possible.
My tool is currently a command‑line Python app with a simple test web interface. It’s functional, but not “production ready” (no authentication, no protections against bad uploads, etc.).
Questions for the community:
Would the ability to view characters offline be useful to you? i.e. players can open their character, "export record" then have an offline copy they can view outside FGU.
How valuable would merging Herolab updates into FGU exports be? i.e. To update a FGU character, using character export data from a 3rd part tool like Herolab.
Is a file‑based workflow (export → merge → re‑import) tolerable, or too clunky? i.e. export your FGU character, import it into this tool, update it with data from a 3rd party character export creating a new FGU import file, then importing that file into FGU with all the updates aplied.
How about a web browser based tool instead? it loads your export file, lets you view the character and create an updated FGU xml with changes.
Broader input:
Which other rulesets might benefit from this approach?
What other third‑party tools do you rely on for character management?
I’d love to hear your thoughts before I decide how far to take this project.
Thanks in advance for any feedback!
[update]
URL to webapp (https://fgu-sync.onrender.com/)
snupy
November 27th, 2025, 08:05
I am almost sure I had replied before... anyway, I would be very interested in a PF 1E implementation, I even started a thread (https://www.fantasygrounds.com/forums/showthread.php?81261-A-Hero-Lab-converter&highlight=) about it some time ago, but unfortunately nothing came out of it.
About your questions: offline viewer would not be a priority for me. Not sure what the other two questions mean, but export from FG, import in HL, edit in HL, export from HL, import in FG would already be good enough. Removing some of those steps would be better, but if it makes the thing much more complex I would not bother.
sgtwhy
December 1st, 2025, 21:15
I am almost sure I had replied before... anyway, I would be very interested in a PF 1E implementation, I even started a thread (https://www.fantasygrounds.com/forums/showthread.php?81261-A-Hero-Lab-converter&highlight=) about it some time ago, but unfortunately nothing came out of it.
About your questions: offline viewer would not be a priority for me. Not sure what the other two questions mean, but export from FG, import in HL, edit in HL, export from HL, import in FG would already be good enough. Removing some of those steps would be better, but if it makes the thing much more complex I would not bother.
thanks for the response, adding more context below;
The offline viewer option is likely intended mostly for players, since there is currently no method to view your FGU characters when the server is offline.
In its current state, the app is basically a "web app" that will be accessible from "anywhere" ... so there is no need to install anything on your PC or device.
And it can load a character file, normalize the data (read it all into memory in a generic format) ... then export in "known" formats.
Currently, its only working for Starfinder 1e ... but I am working on adding support PF 1e and PF 2e ... and eventually SFRPG 2e.
Once its in a semi-working state, I will share more details and invite folks to test it out.
rkjanik
December 3rd, 2025, 21:14
I am almost sure I had replied before... anyway, I would be very interested in a PF 1E implementation...
I second this notion... I would love a PF1e implementation, and I'd be willing to tinker with your python code to test it out.
sgtwhy
December 4th, 2025, 05:53
Quick update for those following along:
Starfinder 1e is fully functional now:
• Standalone HTML viewer from FGU XML
• Merge workflow: FGU XML + HLO JSON → updated FGU XML
Currently heads-down on Pathfinder 1e:
• HTML preview support is in progress
• Merge tooling will follow once Starfinder refinements settle
Next up: PF2 and SF2
• PF2 scaffolding is underway
• SF2 XML samples are staged and ready for parser work
• Shared utilities will drive both HTML and merge support
After that, I’ll circle back to add HLO import/update options across the board.
Screenshot below gives a peek at the current roadmap layout. Appreciate everyone’s patience — it’s coming together piece by piece.
65909
snupy
December 4th, 2025, 18:10
sgtwhy thanks for looking into this and I am sure converter for HLO will be of interest to many people, but tbh personally I was referring to Herolab Classic. From what I've heard HLO for PF1 leaves much to be desired, and in any case it's a subscription.
sgtwhy
December 4th, 2025, 22:10
sgtwhy thanks for looking into this and I am sure converter for HLO will be of interest to many people, but tbh personally I was referring to Herolab Classic. From what I've heard HLO for PF1 leaves much to be desired, and in any case it's a subscription.
some more context about HLO; I started with Herolab "classic" for PF1e (offline) as well. My group finds its much more user friendly to create characters and enforces/insures compliance with all the rules. A couple years ago, we transitioned to their online HLO service around when Starfinder came out. All of my PF1/SF1 purchased content was transferred to the online version and I am only paying a subscription to "share" my content with my players. AFAIK - there is no monthly fee to use the service with the books we have already "purchased". Still can be costly, to invest/unlock a new ruleset and all the related books, no argument there but imho its about the "norm" these days.
That said, I had not even considered the classic HLO files as an import source ... a quick search suggests they used a proprietary "binary" format for those POR files and (afaik) they never released details on the export or file structure. so, sadly it will likely remain "out of scope" for my efforts at this time.
snupy
December 5th, 2025, 19:08
I see. I just had a quick look at HLO again. Tried to create a character but with the free apprentice subscription I could not even choose the starting class. I closed it shortly after. For the 1 minute I used it to pick race and alignment it felt much slower and clunkier than classic. I've also heard that a lot of the old content had not been ported, but I do not know if that is true.
sgtwhy
December 10th, 2025, 00:31
building webapp:
I'm building out the infrastructure to host the web app, so its available 24x7.
My goal is for it to be free to use and always available online.
You can import and view your characters in any web browser.
And save PDF hard copies, for literal "offline" consumption.
Character Viewer
So far, the converter hub can support (4) Rulesets ...
Starfinder (1e)
Starfinder (2e)
Pathfinder (1e)
Pathfinder (2e)
... you can import your FGU character xml data and view it on your browser.
note
This is an over simplification, as there is a lot involved "under the hood".
The app is reading in all the metadata, checking it for consistency -
and then "normalizing" the data for use in later steps.
Currently, the data feeds into the HTML viewer and PDF creator functions.
Long term, it opens the possibility to merge and/or modify the data as needed.
You can see example of that under the "SF1" workflow ...
... where it will merge your HLO export data with an existing FGU xml export.
Then, it creates an updated XML file for re-import back into FGU.
It will add/update the FGU characters levels, metadata, gear, even spells,
based on the changes it finds in the associated Herolab export file.
I'm currently testing this "alpha" feature using my own SF1 campaign data -
but will need assistance from other GMs to test other workflows (SF2, PF2, PF1)
hawkwind
December 12th, 2025, 13:29
Would really appreciate a Murants and Masterminds herolab to fantasy grounds capability for your tool
Bobgranger
December 30th, 2025, 16:30
Dotting for (much) interest
sgtwhy
January 3rd, 2026, 08:43
long story, short ... online BETA access is now available!
What it currently does;
* Imports your FGU exports, normalizing all the data.
* Then lets you view it as HTML and export as PDF.
Rulesets: (Pathfinder 1e, Pathfinder 2e, Starfinder 1e, Starfinder 2e)
Hero Lab support
* currently limited to Starfinder 1e
* requires a "source" FGU xml file and an "updated" herolab JSON export file.
Exporting from FGU; (works for GM or Players)
* open your character, in top left there is a dialog to export record.
* save it to downloads or somewhere you can recall.
Exporting from Herolab;
* open your character
* go to the Play tab
* top right, click the gear icon
* then click export
* then "Download Export Data File"
... this saved it as a JSON file.
NOTE:
If you want me to add more rulesets or functionality, please support the app ... which gives you access to a private discord group to share opinions on what features to improve or add next.
sgtwhy
January 8th, 2026, 00:38
currently testing:
I'm current testing/using the Starfinder 1e pipeline ...
* exporting their level 9 characters from FGU
* exporting their level 10 characters from HLO
* reading both into the webapp, normalizing and merging the data.
* outputting a new "level 10" FGU xml export file
then, to import/validate:
* import the updated XML into FGU
* check for any placeholder items ... starting with "HLO".
* replace placeholders with FGU ruleset specific meta.
something to be aware of ... why this approach is even necessary.
And why we cannot just simply import directly from HLO (or other external formats);
Fantasy Grounds (FGU) export format is 100% inclusive of the referenced source materials.
While Hero lab (HLO) export only includes the titles of choices, no data or context otherwise.
So Hero lab might export your Stone Giant Solarian simply as "race=giant", "class=solarian" ...
but FGU expects, the entire race definition record, with all its related metadata including a link to the source materials.
For obvious reasons, I cannot provide the "missing" data locked behind FGU rulesets or source materials.
That would encroach on copyright violations and its something I don't want to even get close to.
However, we can get around that with this combined approach ...
You first create a FGU version of the character and export it.
Then, my webapp can read and normalize the data "in memory" (only) ...
this provides the missing, ruleset specific context and metadata.
I can use that provided metadata to infer what changes with a level up -
such as spells per level, hit points and stamina, base attack bonuses, save throws, etc.
By combining the data, the app is able to create "complete" updated/merge character data, ready for use in FGU.
Future possibilities from normalizing the data
Since we have the data ingestion / "normalization" figured out ... it does open the option up to further modify the character data.
For example; I have used the tool to update a FGU characters RACE or THEME ... without having to manually rebuild it by hand.
it went something like this;
Export the character from FGU
Export a sample character with the RACE or THEME desired
Run a merge command to replace only the RACE or THEME, leaving everything else intact.
Create a new XML export for FGU
If others find this useful, I can work it into the webapp design.
So far, I am focusing on unlocking options and solving for my current Campaigns needs.
sgtwhy
February 2nd, 2026, 07:10
AWS was a bit expensive for a side project ... for now, have moved it to a free hosting platform;
Character converter (https://fgu-sync.onrender.com/)
... it may take a few seconds to "warm up" if unused in awhile.
But it seems to be otherwise functioning w/o issues.
sgtwhy
March 8th, 2026, 22:16
I have added a minor new feature for SF1 branch ... to correct issues we often encounter in our SFRPG (v1e) campaign.
Update RACE or THEME
1. export your character from FGU
2. export a second character, with correct RACE or THEME
3. Load both into the webapp
4. it creates a "fixed" XML export
5. re-import into FGU
66764
sgtwhy
March 8th, 2026, 22:27
Forgot to mention this earlier ...
BETA update
The latest instance of the app does allow import/view of all (4) rulesets.
66765
It should allow users to test the import / html view functionality ... and possibly the PDF exporter.
However, only SF (1e) has the Herolab or repair functions enabled and working.
sgtwhy
May 5th, 2026, 04:38
FGU Chatlog parser
I am adding functionality to my webapp, to parse FGU Chat logs.
URL: fgu-sync.onrender.com/fgu (https://fgu-sync.onrender.com/fgu)
(give it a few seconds to warm up, if it hasn't been used recently)
Leaderboard
First, I needed to create a "leader board" of sorts.
So, after loading and parsing your chatlog.html file ...
It presents a running Leaderboard of Kills for your campaign.
Compiled by using the STATUS: Dead or Dying in the logs.
The logs can be messy, so it took some creativity to get a proper parser -
since it needs to track any enemies actors with STATUS: Dead or Dying.
But not double count those that start Dying and later, change to Dead.
Session Preview
Next, it also parses the data for each individual session.
The user can select a "session" to preview and summary is shown.
Download
Currently, processing the chatlog also produced (2) condensed files.
These are available under the Downloads tab and includes the following;
Condensed Chat log
Session Combat Stats
NOTE: This is done by directly parsing the chatlog.html (or equiv) for a given FGU campaign.
However, it depends on the data inside that chatlog, so if it was deleted or truncated, results may vary.
Screenshot for reference
67279
Powered by vBulletin® Version 4.2.1 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.