Introducing Stratified (by @alternative): a free tool to visualize your own iNaturalist export data

https://app.stratified.workers.dev/

Youtube Walkthrough/tutorial: https://youtu.be/jWX9fF4RskM?si=maULEnvd3VlVxggB

Goal of the tool:

THIS IS FOR DESKTOP & TABLET

Stratified pulls from iNaturalist API OR a CSV export into visual tools for exploring phenology, species interactions, spatial patterns, timelines, and taxonomic composition.

This app is not a game, it is visualization tool. It has high potential to be used professionally and for presentations.

Niche it fills in the iNaturalist ecosystem:

iNaturalist is excellent for collecting and identifying observations, but I found a gap between having the data and being able to see patterns in it.

I built Stratified as a visualization and exploration tool. You can layer the data in your own exported observations. It is particularly for people working with ecological, restoration, landscape, or field-observation data, where it is important to understand the interactions happening spatially and temporally. What plants and habitats are attracting who, life stages, bloom times which can all be seen spatially, temporally, analytically.

Is there a commercial component, or do you plan to include one in the future? Are donations requested? (yes/no, explain):

No. Stratified is free to use, with no account or sign-up required. There is currently no commercial component. However, I have spent several weeks developing and testing this myself. I spent several hours building my own set of 700 field observations to test this out. This idea was not simply whisked out of thin air. It took 12 years of experience in the building design field and then getting reacquainted with systematic, landscape, and ecological design. I am also continuing to build this out to make it serve its users best. I am willing to take small donations through venmo from @william-dawson-2. Please label them (Stratified donation) for tax purposes please.

What sort of data (if any) does your app collect from its users?:

None. Your iNaturalist CSV is processed locally in your browser and is never uploaded. No account or sign-in is required. The only thing I am tracking is site traffic and cache failures with the API so that I can reformat for better connection times.

Link to your iNaturalist profile:

https://www.inaturalist.org/people/alternative

Description:

I’m a landscape architect, and I collect a lot of field observations on the sites I work with. iNaturalist is great for recording and identifying what I find, but once I exported that data, I wanted better ways to actually see the patterns.

https://www.inaturalist.org/pages/extra_fields_nz

When does a site bloom throughout the year? Which plants are associated with which animals? What does the site’s taxonomic composition look like? I couldn’t find a tool that answered those questions directly from my own iNaturalist data, so I built one.

It’s called Stratified.

Stratified is a desktop-only web app that turns an iNaturalist CSV export into:

  • Phenology wheels for seasonal activity: with onsite & documented phenos - Phenobase.org

  • Interaction networks, including documented interactions from GloBI

  • Timelines and maps

  • Taxonomic treemaps

  • Exportable PDFs and images for reports, presentations, or planting plans

  • It’s free, requires no account, and your data stays on your computer.

Try it here:

https://app.stratified.workers.dev/

Youtube Walkthrough/tutorial: https://youtu.be/jWX9fF4RskM?si=maULEnvd3VlVxggB

Example observation with annotations and field Observations that build into the app:

https://www.inaturalist.org/observations/372929589

Recent Updates

Phenology Wheel (10/2/2026):

Map (9/30/2026):

  • I have connected the map to SSURGO, USDA NRCS Soil surveys, as well as Ecological site descriptions, you can access these from a pop up window by clicking on a soil unit. - This connection was for Restoration folks. This is powerful. It allows one to see Identifications overlaid with soil types. I personally do not like to use the Websoil survey website and have always struggled with making it a part of my maps and don’t like the disconnected nature of their website, but I do like to connect to Reference ecosites for planting plans.This feature makes retrieving soil data very easy!!
  • FEMA national flood hazard layer
  • Project/Place Boundaries - Since CSVs lack those I still provide an option to find yours via the API.

Citations + Feeback:

  • An acknowledgements page has been added for citations and general knowledge base.
  • A feedback comments and rating page has been provided from the front page.

Ongoing:

  • General bug testing: There are undoubtedly edge cases I haven’t encountered yet, so testing with different iNaturalist exports is particularly helpful.

In the works:

  • Global soil data- if anyone knows of any South American, African, Asian or European soil data that is publicly available, let me know! Even if its only to 30m. I was think it would have to be Copernicus, but maybe there are others out there?

Discussion questions / feedback:

I’d love to hear what you think.

  • What patterns would you want to see in your own iNaturalist data?

  • What kind of projects would you annotate to see on site interactions?

  • What would make Stratified more useful for field biology, restoration, gardening, or ecological research?

  • What breaks when you test it with your own data?

  • What new questions does visualizing your observations raise?

Play with it, test its limits, and let me know what you find.

Images are examples of what the charts look like. I have received comments claiming that this app does what others already do, and I think that is false. These charts cannot be simply made in power point or any other app. They are thoughfully designed by myself and created to be interactive. For example, I included the moon phases, celestial events, first and last frost dates, as well as growing season in the phenology chart. Other interactive charts come from existing visual formats like the Sankey-flow diagram, timeline and composition. However, the connections to annotations and field observations and building of them is all my own work.

11 Likes

Which fields are required within the CSV for full functionality?

this thread should be categorized under third-party tools, not general.

this thing you made isn’t at all optimized for a mobile device screen. barely works or doesn’t work on a small screen.

this is a good question because users may choose various fields to export, and observation field availability is based on what the user has used on their own observations (or maybe what’s used in the project).

using the API as a starting point probably gets a much more consistent experience and maybe a faster experience with the ability to handle more underlying observations than the 200000 limit of the CSV export. i think there already are various (mostly third-party) tools that handle more or less most of what your thing does using data from the API. i’m not saying that folks should use those other tools, but that it’s probably possible to skip the CSV.

2 Likes

You can see those under “data & columns”

Sure! I looked for other categorizations, but “general” was the only one that was coming up; plus, it was late, so I wasn’t giving a forum categorization much thought. I also attached it to web. Yes, you are correct; this is purely a web app and something meant to be accessed from a browser on a laptop or desktop. Unfortunately, making interactive maps on a phone is very hard to design and implement. It does not have a 20,000 limit; that is just the sample I provided. Additionally, if you want additional observation fields to work, they will have to be entered in iNaturalist. As you can see, the sample does not have any, as no one has made fields observing interactions; this is why I provided the GloBI API connection. I will keep in mind that it is possible to skip a CSV, but I’m not really sure what you mean by that, as the app needs that to create the visual. I provided a list under “Data & columns” that shows the fields that will work. Each one will show how many observations have those fields. Feel free to keep playing with the app, I appreciate your questions and scrutiny.

1 Like

Observation fields only work under the interaction chart. Separately, for the Phenology wheel, the app will request to connect your observations to iNat’s API for annotations. Then, it does take a minute to fully connect on large data sets, but definitely worth the wait! A data set of 1,000 observations should not take long as it connects in batches of 200 IDs. I am working on speeding up the GloBI API connection. When I was locally hosting the app on my computer before deploying using “Vite” from MIT, it was running much faster, but it is connecting to GloBI much slower in the deployment. So I will be looking into that.

One main bug, I am still working on getting the color coding down for this. I was originally using a main color from Kingdom and having all colors diverge from there in bands for subsequent taxons, but that becomes and issue at the Genus and Species level (in order to differentiate) so I may have the color from kingdom carry to family and then from family, colors will diverge to allow for differentiation amongst genera and species.

For example, from uploading a CSV one is able to create a phenology chart that can show you frequency of observations as well as when flowers are in bloom. The chart can even be filtered down to the the species or genus level. I made the phenology chart a wheel that is a full year, with celestial events, frost dates, growing season and moon cycles. Please feel free to ask any questions :)

Of course, if not all observations have annotations, then the data wont be complete, but it can still be read on the charts.

Another concept you can use these interactive charts for is comparing ID locations for different bird species spatially and by time. I’ve been seeing posts from people about how to see what birds are in such and such location when they are about to visit a site. Well, here in this interactive map, you can see other iNat observations spatially compared with other taxons, so you can place yourself at the site where the most regular occurrences are or it could be for understanding why they are spatially placing themselves at this site? is it a specific habitat or food? what is attracting them there?

2 Likes

Seeing as your original post was about a self-contained program that analyzes CSVs, it may have theoretically been acceptable to leave in General . However, since parts of your project DO interact with the iNaturalist API, it falls under the disclosure requirements of new posts in the Third-party Tools and Apps using iNat API section.

Please add the following information to your initial post (and where these questions are already answered, please copy/paste them into the appropriate slots).

Goal of the tool:

Niche it fills in the iNaturalist ecosystem:

Is there a commercial component, or do you plan into include one in the future? Are donations requested? (yes/no, explain):

What sort of data (if any) does your app collect from its users?:

Link to your iNaturalist profile:

Description:

Discussion questions or areas seeking feedback:

1 Like

I will change it as soon as my “daily limits on edits” will allow me to. I have to wait another 9 hours to make an edit.

Also, there are no requirements, you can also add fields that you have made from the “add fields” option on the main sidebar to the on the left side. But if you have any specific ones I should add to the list, please include them in a reply :)

It appears to me that there is a minimal set of mandatory fields since the app does nothing with my CSV. Here’s an image of all columns of the first 24 rows as illustration.

I expected to at least see the distribution of observations on the map but the app appears not to recognize the coordinates.

This even though the Data & Columns panel states that 23 rows do have coordinates.

Yes that is because I did not plan for folks to include and mix obscured data with regular publicly available coordinates. having these mixed causes the app to fail to load.

I’m seeing though that some coordinates don’t have the same format of the others, and that could very well be the case.

The obscured data is safe to see on the app because it does not collect the data of your CSV. it only reads and interprets it into charts.

But something I will keep in mind for the next update, thanks for finding that bug! I’ll be sure to code in a clause for obscured observations. They probably will never show on a map, but they would come up in the timeline, phenology wheel and interaction network.

if you want it to read your CSV, all coordinates must be filled in, no obscuring.

If you want it to read the CSV, make sure to exclude all obscured data on your export.

Are you able sort annotations for animals? Like male/female?

Yes, if you have animal observations with (male/female) annotations, the app will connect to those. You would simply use the check box to see them in the phenology wheel or timeline - or if they are on an associated plant or “perched on” a plant then you could very well see the interactions of males/females “perched on” plant ID in the interaction network.. I hope that makes sense. Playing with the app will be better than trying to explain everything. I have made it to be simple to understand and interact with so that anyone can start to use it. However, if there are zero annotations on the observations, then the app will not interpret them. That data has to added in iNaturalist.

Here is an example of a Wilson’s warbler I recently observed: https://www.inaturalist.org/observations/402641729

How to export a CSV for Stratified

  1. On iNaturalist, go to Export Observations (inaturalist.org/observations/export) and enter your project, place or username in the search.
  2. Under Choose columns, tick:
    • Basic: All
    • Geo: at least place_guess, latitude and longitude. place_county_name and place_state_name are helpful too.
    • Taxon: All
    • Taxon Extras: kingdom, phylum, class, order, family, genus and species. These power the deeper taxonomy filters and the Phenology Wheel’s rings. (If you skip them, Stratified can look them up for you, but it’s slower.)
    • Observation Fields: All. These feed the Interaction Network and the custom wheel filters.
  3. Click Create Export, download the file, and drag it onto Stratified’s front page:

https://app.stratified.workers.dev/

Tips:

  • iNaturalist caps an export at 200,000 observations. For bigger projects, export in date ranges, then use + Add another file in Stratified’s sidebar to combine them.
  • Flowering and fruiting annotations aren’t included in the CSV. Stratified can fetch them for you on the Phenology Wheel.


Very cool! Quite similar to the year in review

https://www.inaturalist.org/stats/2026/texas_nature_family

Thank you!
Year in review is excellent for everything we’ve ever accomplished, but this app is specifically to help with Landscape, ecological and planning analysis on a specific place. Anyone can create a place on the iNaturalist website using google earth. Normally though, it’s good to check whether there is already a boundary made.

The API definitely limits pulls and takes a lot of time, that’s why exporting CSVs for the app is much faster and a lot less load on iNat. If you truly wanted to see 300k observations from different users on one site over time, that is what this app is for.

due to people’s need for immediate results, they often don’t try out the CSV and write the app off as useless, but i’ve already started using it for helping people understand how a site is functioning, it helps people see a site in ways they haven’t before. I really hope people challenge themselves to try this out. It is easier than it seems.

Im still working on getting data from europe but for the most part, I have the US covered.

1 Like