TCJA after 2025#

Many provisions of the TCJA are temporary and are scheduled to end after 2025 under current-law policy. Tax policy parameters that are associated with expiring provisions and that are not inflation indexed will revert to their 2017 values in 2026. Tax policy parameters that are associated with expiring provisions and that are inflation indexed will revert to their 2017 values indexed to 2026 using a chained CPI-U inflation factor. For a list of the ending TCJA provisions, see this Congressional Research Service document: Reference Table: Expiring Provisions in the “Tax Cuts and Jobs Act” (TCJA, P.L. 115-97), which is dated November 21, 2023.

This document describes how to use the PSLmodels Tax-Calculator command-line interface tc with any compatible input dataset to analyze the post-2025 effects of alternatives to current-law policy (which calls for all temporary TCJA provisions to expire). Compatible input datasets include:

  • the older cps.csv file included in the Tax-Calculator package

  • the older puf.csv file generated in the PSLmodels taxdata repository and available only to those with access to the 2011 IRS/SOI PUF

  • several newer CSV-formatted input files created in the PSLmodels tax-microdata repository that are based on the 2015 IRS/SOI PUF and on more recent CPS data, and are available only to those with access to the 2015 IRS/SOI PUF

Before reading the rest of this document, be sure you understand how to use the Tax-Calculator command-line tool tc, particularly the --baseline and --reform command-line options. (For complete and up-to-date tc documentation, enter tc --help at the command prompt.) Omitting the --baseline option means the baseline policy is current-law policy. Omitting the --reform option means the reform policy is current-law policy. The --tables option produces tables comparing taxes under the baseline policy to taxes under the reform policy by income decile and in aggregate.

The --baseline option is not commonly used, but it can be very helpful in analyzing reforms that take effect beginning in 2026. Such a reform could be analyzed relative to current-law policy (that is, with temporary TCJA provisions expiring after 2025) by omitting the --baseline option. But if such a reform were to be analyzed relative to extending all the temporary TCJA provisions beyond 2025, then the --baseline ext.json option would need to be used. The ext.json file contains the 2026 tax policy reform provisions that would extend TCJA’s temporary provisions beyond 2025. Before using this ext.json reform file, be sure to read how it is generated at the end of this document.

Here are some concrete examples of using the tc tool to analyze a reform of interest to you that begins in 2026. The examples assume you have named your reform file x.json and that you are using one of the compatible input datasets describe above. The examples will call the input dataset z.csv.

To analyze your reform relative to current-law policy (which means temporary TCJA provisions have expired beginning in 2026), you would execute this command:

tc z.csv 2026 --exact --tables --reform x.json

The tables would be in the z-26-#-x-#-tab.text output file generated by this tc run. If you want to do custom tabulations of the micro output data, use the --dump, --dvars, and --sqldb options as explained by the tc --help documentation.

To analyze your reform relative to a reform that extends all TCJA temporary provisions beyond 2025, you would execute this command:

tc z.csv 2026 --exact --tables --baseline ext.json --reform x.json

The tables would be in the z-26-ext-x-#-tab.text output file generated by this tc run.

Also, remember that you can simulate a compound reform using the following syntax:

tc z.csv 2026 --exact --tables --baseline ext.json --reform x.json+y.json

where y.json contains a reform with additional provisions not included in your x.json reform file. The resulting table output would be in a file named z-26-ext-x+y-#-tab.text.

And finally, you might consider creating a reform file called end.json that contains just the two characters {}. This is a null reform, which is equivalent to current-law policy, that could be used as follows:

tc z.csv 2026 --exact --tables --baseline end.json --reform x.json

The resulting table output would be named z-26-end-x-#-tab.text and have the same tabular output as the z-26-#-x-#-tab.text file. Some people may prefer end to # as a way of naming current-law policy in the context of discussing TCJA-related reforms.

How is the ext.json file generated?

The short answer is by using the extend_tcja.py script.

Reading the extend_tcja.py script will provide details on how the values in the ext.json file are generated.

It is important to bear in mind that the extend_tcja.py script will generate a different ext.json file whenever the CBO economic projection (incorporated in the Tax-Calculator growfactors.csv file) changes or whenever new historical values of policy parameters are added to the policy_current_law.json file thereby changing the Policy.LAST_KNOWN_YEAR.

The 3.5.3 version of Tax-Calculator incorporates the February 2024 CBO economic projection and contains historical tax policy parameter values through 2022. Future versions of Tax-Calculator that use historical policy parameter values for 2023 and 2024 or use the February 2025 CBO economic projection will cause the extend_tcja.py script to generate somewhat different 2026 parameter values in the ext.json file.