[REL] TinyPedal - open source overlay for rF2 (Pacenotes,Radar,FFB,Deltabest,Relative,Fuel Calculator)

Hey @svictor! May I ask if it's possible to "spectate" my self in a replay?
I think it could be useful to watch my telemetry while watching my replay.

I believe that most of the data isn't available in the replay, the replay stores just basic data to be able to reproduce it visually, but the majority of the data is discarded to reduce the replay file size.

Tinypedal is based on rF2 API, so for the replay, the source changes completely to the local replay file you have in your disk. For this to happen it would be necessary to adapt the app completely, not impossible, but painful.
 
ebeninca is correct, the game(internal) API does not work under Replay mode, there is "zero" telemetry data sending through game API while watching Replay (game replay has hardcoded/recorded data that works differently than game API, and those data ain't available through game internal API). So unfortunately there is nothing we can do about it.
 
2.33.2 (2025-09-03)
  • Flag Widget
    • [New]Added "yellow_flag_maximum_range_ahead" and "yellow_flag_maximum_range_behind" options (requested by user "Obly88"), which set maximum range for displaying yellow flags that ahead of or behind driver.
      Default range ahead is "500" meters, range behind is "50" meters. To disable yellow flag that behind driver, set range behind to "0".
      Note, yellow flags that ahead of driver take priority over those from behind.
    • Now shows plus and minus sign for nearest yellow flag distance reading. Positive distance reading indicates yellow flag that ahead of driver, negative indicates behind.
  • Brake Bias Widget
    • No longer resets baseline bias delta while game is paused (requested by user "matteocnt92"). Baseline bias delta now also resets while vehicle is stationary during formation lap.
  • Damage Widget
    • Fixed an issue where aero damage reading sometimes was not updated after impact.
  • Speedometer Widget
    • Fixed an issue where minimum and maximum speed could not be reset.
  • Stint History Widget
    • No longer resets current stint data while game is paused (requested by user "ebeninca"). Stint history is no longer recorded during formation lap.
  • Trailing Widget
    • [New]Added "show_steering" option (requested by user "Badorio"), which shows steering input plot. This option is disabled by default.
  • Tyre carcass, Tyre inner layer, Tyre temperature Widget
    • Fixed "enable_heatmap_auto_matching" not working if "show_tyre_compound" option is disabled.
 
New big update 2.34.0 (2025-10-01)
Thank you @svictor. It is an honor for rFactor to have people like you.
TP.png


  • Repository change notice
    • In order to better organize things, as well as serve future development, the repository address (previous under my personal repo) is now moved to "github.com/TinyPedal".
      All previous links to the old repository will be auto-redirected to the new address and continue to work, with only one exception to "Check for updates".
    • Updated "Check for updates" function to point to the new repository address (any version before v2.34.0 may not be able to detect this or newer updates, as expected due to changes above).
  • Auto load preset system
    • Now supports auto loading primary preset for specific vehicle class (requested by user "H4dro" and "Lymark"). Note, auto loading primary class preset (if available) always takes priority over primary sim (such as LMU or RF2).
    • Added "Set Primary for Class" sub-menu to right-click context menu in Preset tab list, which allows to tag select preset with specific vehicle class name for auto loading.
    • Show vehicle class tags in Preset tab. Class tags and colors are defined in "classes.json" file, which can be modified in "Vehicle Class Editor".
    • "Clear Primary Tag" option now removes both "class" and "sim" tags from selected preset.
  • [New]Roll angle Widget
    • Show vehicle front and rear roll angles in degrees.
    • Show roll angle difference between front and rear roll angles.
    • Show roll angle ratio between front and rear. 50% indicates equal roll angle; less than 50% indicates rear rolls more than front.
    • See User Guide "Roll angle" section for details.
  • [New]Weight distribution Widget
    • Show front to rear weight distribution in percentage.
    • Show left to right weight distribution in percentage.
    • Show cross weight (known as "wedge") in percentage.
    • Note, to get accurate static weight distribution readings, test setup on level ground.
      Weight distribution is calculated from tyre load data, which may not be available from certain vehicles in game API (such as LMGT3).
      To workaround this limitation, suspension load data, while not entirely the same, will be used for calculation instead.
  • Tyre pressure Widget
    • Redesigned tyre pressure widget to show cold and hot pressure indication and average pressure deviation (requested by user "ebeninca"). Default color for cold pressure is blue, and orange for hot pressure.
    • Added "hot_pressure_temperature_threshold" option, which sets minimum temperature threshold (measured from tyre carcass in Celsius) for hot pressure indication. Default is "65" degrees Celsius.
    • Added "show_pressure_deviation" option, which shows average tyre pressure deviation between each tyre and the tyre with highest pressure.
    • Added "show_tyre_compound" option for displaying tyre compound symbols.
  • Relative, Rivals, Standings Widget
    • Added "show_vehicle_integrity" option (requested by user "francescodg"), which shows opponent vehicle integrity reading.
      The integrity reading is calculated from hull damage, detachable wheels and parts, and displayed as:
      • Full integrity (no damage), as "-" (default color grey).
      • High integrity (lightly damaged hull), from "9" to "5" (default color blue).
      • Low integrity (severely damaged hull, and most likely has detached wheels or parts), from "4" to "0" (default color red).
  • Fuel Widget, Virtual energy Widget
    • Added "show_estimated_pitstop_count", "show_delta_and_end_remaining", "show_fuel_ratio_and_bias" options, which allow to show or hide corresponding column.
  • Brake temperature Widget
    • Reworked average brake temperature calculation to more accurately reflect average temperature change under braking. Average brake temperature is now calculated from most recent braking period. The braking period is defined by "average_sampling_duration" and "off_brake_duration" options.
    • Added "average_sampling_duration" option, which sets duration (seconds) for calculating average brake temperature from most recent braking period. Default is "10" seconds. Maximum duration is limited to "600" seconds.
    • Added "off_brake_duration" option, which sets duration (seconds) for continuously updating average brake temperature for a short period after fully released brakes. Default is "1" seconds.
    • Removed old "highlight_duration", "font_color_highlighted", "bkg_color_highlighted" options.
  • Laps and position Widget
    • Now shows estimated total laps for time-based session (requested by user "Sandriekus"). A "~" sign will be displayed before estimated total laps reading, and up to two decimal places will be kept.
      Note, estimated total laps reading is calculated based on local player's lap time pace data from Delta Module, which can be different from in-game HUD reading. This reading does not concern about race leader's lap time pace, which means there may be an extra final lap on top of it.
    • Increased "lap_number" bar width by 3 characters to fit with additional digits and decimals from estimated total laps reading.
  • Rake angle Widget
    • Added "rake_angle_smoothing_samples" option for reducing data fluctuation and improved readability.
    • Added "decimal_places" option.
  • Spectate mode
    • Fixed an issue where lower-case names were sorted and placed at the bottom of player list.
  • Misc
    • Added new contributor "sepi" to contributors.md in "Community support" section.
Thanks to everyone supporting the development, have fun.
 
2.35.0 (2025-11-12)
  • API Changes
    • Added new "Telemetry API" setting that handles both "Shared memory API" and "Rest API" accessing.
    • Previous settings from "Shared memory API" and "RestAPI Module" will be auto transferred to "Telemetry API". All old settings are preserved for backward compatibility with older versions.
    • Rest API accessing can now be enabled or disabled by toggling "enable_restapi_access" option in "Telemetry API" dialog.
    • Removed "RestAPI Module" from Module Tab.
  • Delta Module
    • Now calculates estimated lap time based on stint deltabest for increased accuracy (requested by user "Obly88").
      Note, if stint deltabest is not yet available, session deltabest (or all time deltabest) will be used instead.
  • Wheels Module
    • Added brake failure thickness logging to console if brake fails (LMU only).
  • Battery Widget
    • Added "show_battery_charge_warning_flash" option (requested by user "Ces-cos"), which shows battery charge warning flash effect when battery charge decreased below "low_battery_threshold" or increased above "high_battery_threshold".
    • Added "number_of_warning_flashes", "warning_flash_highlight_duration", "warning_flash_interval" options.
  • Brake wear Widget
    • Fixed an issue where brake "warning_threshold_wear" was not correctly applied while "show_thickness" enabled.
  • Relative, Rivals, Standings Widget
    • Added "show_stint_laps" option (requested by user "Shu Gu"), which shows number of completed laps from current stint and estimated total stint laps.
      Note, this option is only available for LMU, and "RestAPI Module" must be enabled for accessing stint data.
    • Added "yellow_flag_status_text" option (requested by user "bshpanchuk"), which shows yellow flag indicator when driver causes (or likely to) yellow flag. Note, unlike in-game yellow flag, the indicator is always displayed when driver's speed is below 28kph (outside of pit lane), regardless whether driver has caused yellow flag on track.
    • "class_width" can now be set to "0" to hide class name while showing only class color. (requested by user "Levis1234").
    • Added "show_pitstop_duration_while_requested_pitstop" option, which shows driver's last recorded pit stop duration (in lap time column) while you have requested pit stop.
  • Misc
    • Fixed an issue where consumption history was not recorded if two consecutive laps ended with exact same lap time.
 
Hi svictor,

I don't know if this is beyond the scope of Tinypedal or even possible with rf2.

When in specate mode is it possible an app (or Tinypedal in this case) can capture user selected events like yellow flags, changes of position, car contact, recent DNF, car pitting etc... and display them in a visible event log?

The reason I ask this is to help for broadcast purposes. We already use part of the hud and track map to keep track of the action.

As far as the track map goes, are the colours for the dots not able to display the cars on the lead lap differently from lapped cars when in spectate mode?

Any news on whether this is feasable @svictor ?
 
Any news on whether this is feasable @svictor ?

The yellow flag & car damage & stint laps stats for each driver are already available on Standings/Relative Widgets in latest 2.35.0 version, so that should already cover most of your earlier request regarding "yellow flags, changes of position, car contact, recent DNF, car pitting".

Cheers

Screenshot 2025-11-14 121247.png
 
Last edited:
The yellow flag & car damage & stint laps stats for each driver are already available on Standings/Relative Widgets in latest 2.35.0 version, so that should already cover most of your earlier request regarding "yellow flags, changes of position, car contact, recent DNF, car pitting".

Cheers

View attachment 56820

But as a spectator isn't the relative pretty inactive?
 
Most data are displayed while spectating, just make sure you have selected and activated a player in Spectate Tab list. You may also want to adjust max number players to display in both Relative & Standings Widgets. (There are plenty users who have been using TinyPedal Spectate mode to monitor race during LMU driver swap events.)

However, if some data ain't showing any readings while spectating remote players, that simply means those data ain't provided through game API (some data are only available for local player), and there is pretty much nothing that third party developer can do about it.

Consider seek game developer to update their API to include those missing data instead.

Note, this is not a cliche, because I have seen more users asking third party developers to include features that are not available through game API (if a data isn't in game API, then there is nothing can be done on the 3rd party dev part), yet there are very few users actually take the steps to ask game developer to add those *specific missing data* to their game API.

Cheers
 
2.35.1 (2025-11-18)
  • Relative, Vehicles Module
    • Added alternative stint laps recording for vehicle without virtual energy (requested by user "bshpanchuk").
    • Now continues to update relative and vehicles data while not driving in active session (such as in garage or spectating)
  • Relative, Rivals, Standings Widget
    • Current stint laps reading now shows on vehicle without virtual energy (such as LMP2). Note, estimated total stint laps cannot be shown on vehicle without virtual energy due to missing game API data.
  • Misc
    • Fixed an issue where TinyPedal could not be closed if "enable_restapi_access" option is disabled in Telemetry API setting (reported by user "Deckard9999").
 
2.35.3 (2025-11-25)


2.35.3 (2025-11-25).jpg


  • Wheels Module
    • Avoid resetting wheel radius, tyre wear, brake wear data while game is paused.
    • Added delta wear calculation for estimating brake wear difference per lap.
    • Now automatically saves brake failure thickness values to "brakes.json" preset when brakes failed.

  • Brakes Preset
    • Now saves and loads brake style and failure thickness settings per vehicle brand for the same class, as different brands utilize different settings.
      Note, user must import vehicle brand data via "Vehicle Brand Editor" in order to save settings under vehicle brand name.

  • Brake wear Widget
    • Now shows "FAIL" text on failed brakes.

  • Pit stop estimate Widget
    • Added "lengthy_stop_duration_threshold" option, which sets warning threshold for lengthy pit stop duration in seconds. Default is "60" seconds.
      This option can be useful to check for unusually long pit stop duration, such as repairing.
    • Added "show_maximum_delay" option, which allows to show or hide "maximum delay" and "maximum total duration" column.
    • Added "show_relative_refilling" option, which allows to show or hide "actual relative refill" and "total relative refill" column.
 
Since recently some people have brought up issues and questions regarding "Rest API accessing" again, with various false or incorrect information floating around, it is time to clear up things about "how TinyPedal accesses Rest API", and whether it is safe to enable "Rest API accessing" in TinyPedal, for the final time.


The Question:

Can TinyPedal change or modify game data by accessing Rest API?

The Answer:

No, TinyPedal cannot do that. Same with "shared memory API", TinyPedal only reads API data from "Rest API", TinyPedal does not change or modify game API data.

There is a common misunderstanding that accessing LMU's Rest API can cause game setting to be changed, but this is not entirely true.

Rest API uses specific HTTP methods, notably the "GET", "POST", "PUT", "DELETE" methods, where only "POST", "PUT", "DELETE" methods can modify game API data, while "GET" method can only retrieve and read data. That means any third party software that uses one of the "POST", "PUT", "DELETE" methods can modify API data, while "GET" method cannot.

However, in TinyPedal, Rest API accessing is solely based on "HTTP GET" method (feel free to check out source code if in doubt), which only retrieves data from game API, and this "HTTP GET" method cannot change or modify game API data, as mentioned above.

If you see game API/data changed, check out other "third party software" or "plugins" that may have been accessing game's Rest API using "POST", "PUT", or "DELETE" methods which may cause unwanted issues.

For those still hold doubts, you can always disable Rest API accessing by turning off "Enable RestAPI Access" option in "Telemetry API" dialog.

Some reference links to HTTP methods, explanations, and specifications:
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods
- https://httpwg.org/specs/rfc9110.html#GET

Additional notes to the known "LMU MFD pitstop menu flickering" issue:
Since TinyPedal only uses "HTTP GET" method, it cannot change pitstop menu setting, so the flickering is only "visual", as long as you use TinyPedal only.

However, if there are other third party software or plugins that are also running the same time and using "POST", "PUT", or "DELETE" methods, then those software or plugins can change game data (such as MFD setting) unexpectedly.

Tip: for those having trouble determine "replace brakes" value, you can determine whether "replace brakes" option is YES or NO by looking at "stop" column value from "Pit stop estimate Widget", see full explanation:

FAQ page is also updated:

Finally, as mentioned before, TinyPedal is open source project, all source code is available on project page, feel free to check them out.

Good luck and have fun

S.Victor
 
Hello Svictor, it's possible for Tiny to replicate the light for lift&coast in LMU, the ones that advice when lift to save fuel for the target lap?
 
Hello Svictor, it's possible for Tiny to replicate the light for lift&coast in LMU, the ones that advice when lift to save fuel for the target lap?
Replicate lift & coast LED would be difficult, since game doesn't provide ready-to-use "lift & coast LED" data through API, and there are no available information of how actual "lift & coast" is calculated (formula or algorithm) from web search.

So even if we are going to implement it, it will not be the same as how game or real life calculates it, and it would involve a lot data recording and processing. Not much more can say.
 
2.36.0 (2025-12-13)

2.36.png


  • Major API Changes
    • Now supports LMU's new built-in API, no plugin is required to access this API. Note, currently this new API is not accessible on Linux system.
    • Added "legacy" tag to the old plugin-based LMU API (rF2SharedMemoryMapPlugin), and can still be used as fallback.
    • Added "API" menu to main window, which allows to switch game API, configure options, and restart API. "API" menu can also be accessed by clicking "API" button on right-bottom of status bar.
    • API settings are now saved separately in user preset file for each different game API.
    • Auto-switching API is not supported currently. Removed "auto load primary preset for sim" option.
  • Pace Notes Playback
    • Fixed volume slider could not apply volume change while using PySide6.
  • Brake wear, Tyre wear Widget
    • Added "show_live_wear_difference" option (requested by user "kfran42" & "laabbassi"), which shows current lap wear difference. This option is disabled by default.
    • Fixed wear data sometimes did not reset after changed session.
  • Track notes Widget
    • Added "show_pit_notes_while_in_pit" option (requested by user "DanRZ"), which shows alternative pit notes while in pit lane.
    • Added "pit_notes_text" & "pit_comments_text" options.
  • Misc
    • Now saves current version info in user preset, which is used to auto check and update outdated settings.
    • Updated "README.md" and "User Guide" with new API info and options.
 
I think the Auto loading Preset for primary sim isn't working, unless I'm missing something.
Yes, this feature is removed as mentioned in changelog:
Auto-switching API is not supported currently. Removed "auto load primary preset for sim" option.

Note, "auto load primary preset" will still work for "class" tag.

The reason for removing this feature is due to both complexity & efficiency concern.

Since the new LMU API no longer share the same API accessing point as RF2 plugin API (and legacy API), detecting "sim change" will require of using "process id" scan (periodically) in the system, which is very expensive operation that will drag down performance with little to gain, and there is multiple APIs for same game (LMU) and may not work under other system like Linux.

Sacrificing system performance for little user convenience is not optimal in this case, so this feature is not provided currently.
 
Firstly is the API choice supposed to be tied to the profiles? Because when I switch mine the API choice doesn't move with it.

Secondly, is it possible to have a toggle option to show a little title above some of the boxes telling you what they are? Nothing too big or too long.
 
Back
Top