Skip to main content
This guide will help you read your first Fortnite replay file and extract game data.

Prerequisites

Before you begin, ensure you have:
  • .NET 6.0 or later installed
  • FortniteReplayReader package installed (see installation guide)
  • A Fortnite replay file (.replay) to parse

Your first replay parser

1

Import required namespaces

Start by importing the necessary namespaces in your C# file:
using FortniteReplayReader;
using FortniteReplayReader.Models;
using Unreal.Core.Models.Enums;
2

Create a ReplayReader instance

Initialize the ReplayReader with optional configuration:
var reader = new ReplayReader(null, new FortniteReplaySettings
{
    PlayerLocationType = LocationTypes.All
});
Pass null for the logger parameter if you don’t need logging. For production use, consider using Microsoft.Extensions.Logging.
3

Read a replay file

Parse the replay file using the ReadReplay method:
var replay = reader.ReadReplay("path/to/replay.replay", ParseType.Full);
  • ParseType.Minimal - Fast parsing with basic data (~2-3 seconds)
  • ParseType.Normal - Includes player tracking (~5-10 seconds)
  • ParseType.Full - Complete data extraction (recommended for analysis)
4

Access the parsed data

Now you can access all the extracted game data:
// Player eliminations
foreach (var elim in replay.Eliminations)
{
    Console.WriteLine($"Player eliminated at {elim.Timestamp}ms");
}

// Match statistics
if (replay.Stats != null)
{
    Console.WriteLine($"Eliminations: {replay.Stats.Eliminations}");
    Console.WriteLine($"Accuracy: {replay.Stats.Accuracy:P}");
}

// Player information
foreach (var player in replay.GameInformation.Players)
{
    Console.WriteLine($"{player.EpicId}: Placement #{player.Placement}");
}

Complete working example

Here’s a complete program based on the library’s ConsoleReader example:
using FortniteReplayReader;
using FortniteReplayReader.Models;
using Unreal.Core.Models.Enums;
using System;
using System.Diagnostics;
using System.Linq;

class Program
{
    static void Main()
    {
        // Create reader with optimized settings
        var reader = new ReplayReader(null, new FortniteReplaySettings
        {
            PlayerLocationType = LocationTypes.All,
            IgnoreFloorLoot = false
        });

        var stopwatch = Stopwatch.StartNew();
        
        // Parse the replay file
        var replay = reader.ReadReplay("replay.replay", ParseType.Full);
        
        stopwatch.Stop();

        // Display results
        Console.WriteLine($"Parsed in {stopwatch.ElapsedMilliseconds}ms");
        Console.WriteLine($"Total eliminations: {replay.Eliminations.Count}");
        Console.WriteLine($"Total players: {replay.GameInformation.Players.Count}");
        
        // Show top 5 players
        var topPlayers = replay.GameInformation.Players
            .OrderBy(x => x.Placement)
            .Take(5);
            
        foreach (var player in topPlayers)
        {
            Console.WriteLine($"#{player.Placement}: {player.EpicId} - {player.TotalKills} kills");
        }
    }
}

Configuration options

You can customize what data is extracted using FortniteReplaySettings:
var settings = new FortniteReplaySettings
{
    PlayerLocationType = LocationTypes.None,
    IgnoreHealth = true,
    IgnoreShots = true,
    IgnoreInventory = true,
    IgnoreFloorLoot = true
};
Optimized for speed when you only need basic match data.

Parse from a stream

You can also parse replays from a Stream instead of a file path:
using (var stream = File.OpenRead("replay.replay"))
{
    var replay = reader.ReadReplay(stream, ParseType.Full);
    // Process replay data...
}
This is useful when:
  • Reading from network streams
  • Processing replays from memory
  • Handling compressed files

What data can you access?

After parsing, the FortniteReplay object contains:

Eliminations

Player elimination events with locations, weapons, and elimination details

Stats

Match statistics including kills, accuracy, damage, materials, and more

Players

Complete player information including placement, kills, team, and inventory

Game Events

Safe zones, supply drops, llamas, and other in-game events

Location Tracking

Player movement paths and positions throughout the match

Inventory

Player inventory changes, weapon switches, and loot pickups

Next steps

Configuration

Learn about all configuration options

Extracting player data

Deep dive into player statistics and tracking

Game events

Work with eliminations, safe zones, and more

Performance optimization

Optimize parsing for your use case

Build docs developers (and LLMs) love