A module for measuring and visualizing frame-based performance metrics.
Tracks 1% low FPS, 0.1% low FPS, average FPS, current FPS, and frametimes out of the box.

- Highly customizable.
- Supports custom UIs.
- Supports custom metrics with easy integration.
- Real-time graph visualization.
- No external dependencies.
- Strictly typed.
[FrameBufferCapacity] - The maximum number of frames stored for calculating interval-based metrics, such as average FPS and low-percentile FPS.
[UpdateInterval] - Time (in seconds) between updates of interval-based metrics and labels.
[ScreenGui] - The ScreenGui used by Metrix.
[Metric] - The metric a graph or label will display.
[Format] - A string.format() pattern used to format label text.
[MaxValue] - The maximum value a graph can show.
[HistorySize] - The maximum number of data points a graph can display at once (capped at 100).
[Thickness] - Thickness of the graph.
[Color] - Color of the graph.
-- Starts Metrix.
Metrix:Start(): ()
-- Stops Metrix.
Metrix:Stop(): ()
-- Toggles Metrix ON or OFF.
-- Intended for convenient input-based usage.
Metrix:Toggle(): ()
-
To add a
Custom UI, replace the defaultScreenGuiin theConfigand ensure the UI element names match.
WARNING: When making aCustom UI, use offset instead of scale asgraphsdon’t scale properly.
Graphsare also quiteperformance-heavy, especially when adding a large number of them with highHistorySizevalues. -
To add
Custom Metrics, insert your logic intoUpdateFrameMetrics()orUpdateIntervalMetrics()functions, depending on how often the metric should update:
if CurrentMetrics.CustomMetric then
CurrentMetrics.CustomMetric = math.random(1, 100)
end
- New metrics work like any other. For type checking, add them to the
Typessub-module.
1.0
- Initial Release.
1.01
- Changed
HistorySizeof the default graph from 240 to 60. - Changed a few descriptions.
1.1
- Switched to
Path2Dfor drawing graphs, improving graph performance by around 2–3x. - Graphs are now capped at 100
HistorySizeand will error if exceeded (Path2Dlimit). - Fixed
Toogle()typo. Thanks to @jellolemo - Renamed
LineThicknesssetting toThickness. - Renamed
LineColorsetting toColor. - Changed a few descriptions.
