What is an XER File?
An XER file is a proprietary ASCII text file exported by Oracle Primavera P6 (Project Management). Despite ending in .xer, it is actually a serialized dump of relational database tables separated by tab delimiters (\t).
Inside an XER file, a project schedule is not stored as a flat list of dates. It is stored as normalized database entities connected by primary and foreign keys—just like in Oracle Database or Microsoft SQL Server.
The Three Core Syntax Tokens: %T, %F, and %R
If you open an uncompressed XER file in a text editor (such as VS Code or Notepad++), you will immediately notice three repeating prefix markers:
%T [TABLE_NAME]— Table Header: Declares the start of a database table (e.g.%T TASK).%F [field1] [field2] ...— Field List: Lists the tab-separated column names for that table.%R [val1] [val2] ...— Record Row: Represents a single row of data matching the fields above.
ERMHDR 22.12 2026-09-13 PROJECT %T PROJECT %F proj_id proj_short_name plan_start_date plan_end_date %R 1042 EXP-2026-01 2026-01-15 2027-08-30 %T TASK %F task_id proj_id wbs_id task_code task_name total_float_hr_cnt %R 85912 1042 502 A1000 Mobilization 0.0 %R 85913 1042 502 A1010 Site Clearing 0.0
The Most Critical Tables in an XER File
A full P6 XER export often contains between 40 and 90 tables. The most important tables that govern schedule calculations and reporting are:
| Table Token | Table Name | Description & Key Columns |
|---|---|---|
%T PROJECT |
Project Header | Stores project metadata, calendar assignments, planned start, scheduled finish, and data date (last_recalc_date). |
%T PROJWBS |
WBS Tree | Hierarchical Work Breakdown Structure tree nodes linked by parent_wbs_id and wbs_short_name. |
%T TASK |
Activity Master | All activities: task_code (Activity ID), task_name, early start, early finish, late start, total float, and status. |
%T TASKPRED |
Logic Relationships | Predecessor/successor links (pred_task_id, task_id), relationship type (PR_FS, PR_SS, PR_FF), and lag (lag_hr_cnt). |
%T CALENDAR |
Work Calendars | Working days per week, standard shift hours (day_hr_cnt), and holiday exception strings. |
%T TASKRSRC |
Resource Assignments | Budgeted units, remaining units, actual units, cost accounts, and rate tables assigned to activities. |
Why Can't Excel or Python Parse XER Files Out-of-the-Box?
Many engineers attempt to rename an .xer file to .csv and open it in Excel. The result is unreadable because Excel attempts to treat all 60+ tables as a single continuous flat sheet, mixing project parameters with activity rows and calendar definitions.
Furthermore, calculating the Critical Path and float requires evaluating every relationship in TASKPRED against the specific work calendar shift hours defined in CALENDAR.
How Schedulytics Solves XER Parsing Offline
Schedulytics was built specifically to solve this challenge. It features a standalone, in-memory C++/Python parser that:
- Reads the entire XER table schema in seconds without an external database.
- Resolves relational foreign keys into human-readable WBS hierarchies and activity codes.
- Executes independent Critical Path forward and backward pass calculations.
- Outputs clean, ready-to-use 22-sheet Excel workbooks and interactive single-file HTML dashboards.
Audit and Report on P6 XER Files in Seconds
Download Baseline Schedulytics or Progress Schedulytics from the Microsoft Store for instant, 100% offline schedule analysis.
Audit P6 Baseline XER →