Skip to main content
Free tool · No signup

Free SSRS Migration Assessment

Point this at your .rdl files and get a Migration Readiness Report: how many reports you have, how complex they actually are, which T-SQL constructs will need a human, and what the remainder is likely to cost. It runs in your browser — the files never leave your machine.

A real inventory

Report count, datasets, parameters, data regions, charts, subreports, custom code blocks, and stored-procedure-backed datasets — counted, not guessed.

Complexity tiers

Every report scored Simple, Moderate, or Complex against a published rubric. The thresholds are on this page; nothing about the scoring is hidden.

Known-hard constructs, named

The specific T-SQL in your reports that a human will have to look at — PIVOT, cursors, temp tables, dynamic SQL — separated from the constructs that convert without help.

Effort framed against the alternative

What the remainder costs at full-rebuild rates, next to what rebuilding the whole estate by hand would cost. Both ranges, never a single flattering number.

Your .rdl files never leave your browser

The analysis below runs entirely in this page — the same parsing and classification stage our conversion pipeline uses, in analyze-only mode. Nothing is uploaded, nothing is stored, and no request is made while you analyze. We read the report definitions only: no customer data, no database connection, no query is ever executed.

If — and only if — you ask for the emailed copy, the derived summary numbers (counts, tiers, construct names) are sent to us so we can send you the email. Your RDL content is never part of that request.

Upload .rdl files

Select as many as you like — a whole folder of reports gives a far more useful picture than one.

Or paste report XML

Optional. If you only sampled a few files, this tells us the real scale of the job.

Would rather not open a browser file picker at all?

Download the same scanner as a dependency-free Node script and run it against your report folder on your own machine. It opens no sockets and prints the identical summary. A test in our repo runs both implementations over the same fixtures and fails the build if they ever disagree.

Download rdl-scan.mjs

node rdl-scan.mjs C:\path\to\your\reports

Why bother running this now?

Not because of a cliff. SSRS 2022 receives security patches through January 11, 2033 — nothing stops working on a date, and anyone telling you otherwise is selling urgency.

The honest reasons are slower and harder to ignore. SQL Server 2025 shipped without SSRS and there will be no new versions of it. SQL Server 2016 extended support ended in July 2026. The pool of people fluent in RDL and T-SQL keeps shrinking. SQL Server and Windows licensing keeps costing money that a move to PostgreSQL on Linux would stop. And the migration itself compounds — every report your team adds between now and the day you decide is one more report to move.

An estimated 100,000–150,000 organizations are still running SSRS. Knowing the shape of your own estate costs you nothing and takes about a minute.

Assessment — Frequently Asked Questions

Do my .rdl files get uploaded anywhere?

No. The analysis runs entirely in your browser using the same parsing and classification stage our conversion pipeline uses, in analyze-only mode. No request leaves the page while you analyze. If you ask for the emailed copy, only the derived summary numbers — report counts, complexity tiers, and the names of the constructs detected — are sent so we can send you the email. Your RDL content is never part of that request. If you would rather not use a browser at all, download the offline scanner and run it locally; it opens no network sockets.

Does the assessment touch my database or my report data?

No. It reads report definitions (.rdl XML) only. It never connects to a database, never executes a query, and never sees a row of your data. The T-SQL it classifies is the query text stored inside the RDL, which is a property of the report, not of your data.

How accurate is the estimated auto-conversion band?

It is an estimate from a static scan, not a guarantee and not a quote. The low end is the share of your reports with no known-hard construct; the high end adds the reports with exactly one. It is capped at 95% because a static scan never justifies a 100% claim, and it is always shown as a range at least 5 points wide. It cannot see your data volume, schema drift, collation behaviour, or what is hidden inside a stored procedure. Any conversion rate published elsewhere on this site is our historical rate on our own production report library — it is not a prediction for your estate.

What counts as a known-hard T-SQL construct?

Constructs where PostgreSQL has no direct equivalent or the semantics change: PIVOT and UNPIVOT, recursive CTEs, temp tables and table variables, cursors, MERGE, CROSS and OUTER APPLY, FOR XML and FOR JSON, TOP WITH TIES, IDENTITY functions, linked servers and OPENQUERY, dynamic SQL via EXEC or sp_executesql, and CLR assemblies. Subreports, custom VB.NET code blocks, and stored-procedure-backed datasets are counted as hard signals too, because the work they imply is not visible in the RDL.

Is there really a deadline?

Not a cliff, and we will not pretend there is one. SSRS 2022 receives security patches through January 11, 2033, so nothing breaks on a date. The real pressure is different: SQL Server 2025 shipped without SSRS and there will be no new versions, the pool of people who are fluent in RDL and T-SQL keeps shrinking, and SQL Server plus Windows licensing keeps costing money you could stop spending. Migration cost also compounds — every report added between now and then is another report to move. If you are specifically on SQL Server 2016, its extended support already ended in July 2026 — see the dedicated breakdown below.

SQL Server 2016 end of support — what it means for SSRS

Know the number? Now do something with it.

Cohort 1 is enrolling — 20 slots. Bring your assessment and we will tell you honestly whether automated conversion is worth it for your estate, including when it is not.