2010 - 2020 Tract Geographic Crosswalk?

Hi, we are hoping to use a 2010-2020 tract geographic crosswalk (built from the block crosswalk) in order to avoid going down to the block-level every time we transform data across census vintages. Is there a pre-existing crosswalk at the tract-level on the NHGIS website that I’m missing?

If not, would this be an appropriate way to transform block weights to the tract-level?

Multiply 2010 block population by WEIGHT to get partial block population counts. Sum partial block population counts up to the tract level (grouping by 2010 and 2020 tracts) to get partial tract population counts. Divide these partial counts by the 2010 tract population to get WEIGHT_TRACT.

We’ve begun work on tract-to-tract crosswalks and aim to release them in a few weeks, hopefully by the end of August.

Until then, yes, the method you describe is a good way to generate a tract-to-tract crosswalk. We’ll essentially use that same method for our crosswalk, doing the same thing with block counts of housing units & households, etc., in addition to population, in order to produce various interpolation weights.

That said, as explained on our crosswalks page, we recommend starting from smaller units than tracts if possible. If you start with tract data, it often requires disaggregating from large tracts to smaller tracts and tract parts; if you start from smaller units, you can avoid much of that disaggregation and the errors that come with it. E.g., if there’s data on your characteristics of interest for block groups, you could use our crosswalk from 2010 block groups to 2020 tracts to get more accurate standardized tract data than if you start with 2010 tract data.

Looking forward to using the tract-to-tract crosswalks! Any updates on when they might be available?

Thanks for your interest. Unfortunately, other priorities have come up here. It may yet be another month or two before we release the tract-to-tract crosswalks.

Ahh, too bad! I know how that goes, though.

Thanks for getting back to me. I’ll keep my eye on the site.



On a similar note, will NHGIS release time series tables with geographic integration standardized to 2020 in the next month or so? If not, I assume we use the 2010 geographic integration and apply the 2010-2020 crosswalk. Is that correct?

I’ve responded to Peter’s question here in this separate related post.

Hi Jonathan, has there been any progress on the tract-to-tract crosswalks? I am working with a dataset which I hope to assess change from 2010 to 2020 but the finest scale for the source data is tract level. Do you have a solution is the crosswalk walks are not yet available?

I’m sorry, Catherine. Various other demands keep delaying the tract-to-tract crosswalk release. It’s in the mix for things I hope to get done this spring, but there remain some other more pressing things that may still push it out farther.

In the meantime, with an extra step (and some much larger files), you could use the NHGIS block-to-block crosswalks to standardize data from tracts–or to create your own tract-to-tract crosswalks–following the instructions I provided in this post. There I describe how to use block-to-block crosswalks to standardize data from block groups–which is no longer necessary now that we’ve released block group crosswalks. But the instructions apply the same to tracts if you just replace “block group” with “tract”.


Hi Jonathan! Thank you for your answers to this thread! Since it’s been a few months since your last comment I’m wondering if you have a update on the tract to tract crosswalk for 2010 to 2020?

I’m doing some work this year where we are definitely going to be using tract to tract conversion. Based on your previous comments I’ve figured out how we can accomplish this using the IPUMS block group crosswalk, but of course a tract to tract crosswalk would be better. Thanks again for your previous answers and for all the great resource you are publishing!

Hi Rachel, still no definite date, but it’s a top priority for the next few weeks. I’ll try to post back here when they’re out, but we’ll also definitely announce it in an email to IPUMS users.

I am using the block crosswalk (2010 source to 2020 target) for a census tract in 2010 that was split in 2020 into 2 tracts (.01 and .02). When I apply the crosswalk to the 2010 data, the sum of population for the 2010 tract (combination of the two 2020 tracts) is less than the 2010 total for the source data. Is there another step after applying the weights to the 2010 data? The 2022 initial post suggests a second step of dividing by 2010 source population and perhaps pro-rating the 2010 target data by this weight at the tract level?

First, I just want to confirm: are you working with some 2010 data that isn’t available for units smaller than tracts? Most commonly used tract-level tables are also available for blocks in 2010 census data or for block groups in ACS summary data. If the data you’re trying to analyze are available for these smaller units, then you don’t need a tract-to-tract crosswalk, and as explained on our crosswalk page, you can produce more accurate data by getting 2010 data for the smaller units and using our crosswalks for those units to generate 2010 data for 2020 tracts.

Second, if you don’t have 2010 data for any units smaller than tracts, then you can use the method described in Taylor Lampe’s initial post here to generate a tract-to-tract crosswalk. You’d need to follow all of the steps they described, and that would produce only weights for a tract-to-tract crosswalk, not actual final estimates of 2010 data for 2020 tracts. To generate 2010 estimates for 2020 tracts, you’d still need to apply the weights produced by Taylor’s method to the 2010 tract data, and then sum for each 2020 tract. Alternatively, you could follow the instructions I described in this post, which describes how to use block-to-block crosswalks to generate data for block groups. Those instructions apply the same to tracts if you just replace “block group” with “tract”.

If that’s still not producing results you’d expect, please share more detailed info about the steps you’re taking along with some results. That would help me understand what’s not working.


Any updates on the 2010-2020 Census Tracts → Census Tract crosswalk?


Sorry, no big updates to share. Clearly, my past estimates have been overly optimistic, so I won’t provide a new estimate now!

If you’re curious, what’s been holding it back is a decision we made to include a range of related improvements in the next release (standardized documentation, a larger standardized set of weights, crosswalks from blocks to larger units, and records for Puerto Rico in 2000 crosswalks–in addition to the tract-to-tract crosswalks for each pair of years covered by our existing crosswalks). We’ve made progress on all of this, but completing the full scope has required more effort than we’ve been able fit in among other priorities. We should have time to get back to this in the coming months, but it remains to be seen whether that’ll be enough time to finally wrap it up.