The clock on Congressional sessions: Analyst notes
Go behind the scenes with our team as we find and make sense of the numbers.
Both chambers of Congress publish their anticipated session schedules early each year. This is an official calendar that helps members, staff, and the public better understand when they may be debating or voting on the chamber floors.
My team thought there may be something interesting to explore here. Maybe trying to answer “when are they in session,” “does their actual schedule match their plan,” or “are they in session right now.” That kind of thing. So, I started poking around at available information and almost immediately found something I wasn't expecting.
Congress doesn’t just publish which days it’s in session. It publishes the start and end time for each day as well.
At first, I thought this might just be a fun bonus. A little extra texture on top of what may have otherwise been a pretty straightforward story about scheduling. Then I looked at the record for January 16 of this year. The House was in session for about three minutes. The Senate? Thirty seconds.
My initial instinct was that someone had made a typo. Maybe the end time was logged as “8:31 am” instead of “8:31 pm” or “fat-fingered” a number. (It happens!) I pulled up the C-SPAN recordings to check and sure enough, the Senate gaveled in and thirty seconds later gaveled back out.
I was so intrigued by this curious little quirk of how our government works that I shifted the entire story from when Congress is in session to how long.
If you want to jump to my final story, you can find it here, or you can follow me down a bit of a rabbit hole figuring out just how long Congress actually spends in session.
On January 16 of this year, the House was in session for about three minutes. The Senate? Thirty seconds.
The data on Congressional sessions
I got a little ahead of myself. I mentioned that Congress releases start and end times for all its sessions, but I didn’t mention where. If you were hoping for a perfectly formatted spreadsheet, you’ll be sorely disappointed.
Each day that either chamber is in session, Congress releases a series of records about the day. The simplest version of this is referred to as the “Daily Digest.” It briefly details any measures that were considered or passed, votes that were taken, amendments submitted, and yes, the time the session started and ended.
But, it’s all written in a narrative format. So, instead of finding something easy to gather like this:
start_time: 12:01 p.m.
end_time: 4:03 p.m.
The information was somewhere in the middle of this document, often written something like this:
OR
I could have gone through each document and manually pulled out the start and end times for both chambers each and every day, but I’m pretty sure I’d still be working on it if I took that route. Instead, I decided to see if I could automate this process a bit.
Bring on the robots (kind of)
Luckily for me, the US Government Publishing Office offers an API — basically a way for computer programs to automatically read and grab content from their documents without having to download and open each file by hand.
So I wrote a small computer program, or “script,” that would use the API to find the Daily Digest for every day of the last decade and pull out just the parts I was interested in.
This was possible because what I was looking for had a pretty consistent shape. The sentences that listed the start and end times almost always appeared in one of two patterns:
Chamber convened at start time and adjourned at end time
Chamber met at start time and adjourned at end time
My script’s job was to find any sentences that followed either of those patterns and extract just that sentence into a much easier-to-use spreadsheet. So, instead of having to search through tens of thousands of pages of documentation manually, my script parsed them in seconds, leaving me with only a few hundred sentences.
I then did a bit more cleanup and pulled out the start time and end time from those sentences programmatically and calculated the number of minutes between the beginning and the end.
The data looked something like this:
Here’s one of my earliest looks at the data I had gathered:
I found a few things of note here. First, there are a lot of those short days. Quite a few (the ones represented in yellow) lasted less than an hour. I also noticed that during the government shut down last year, Senate still met for some long days, but the House only held brief sessions. Interesting!
Then I saw that a lot of days were missing. It seems that some of those days the chamber truly didn’t meet. But some of the missing days were caused by special “edge cases” that weren’t caught by my script.
When your script breaks
It turns out that my script mostly worked, until it didn’t. Take April 7, 2025, for example. That day, the Senate adjourned “as a further mark of respect to the memory of the late John Bennett Johnston, Jr.” The word “adjourned” and the end time were separated by an entire eulogy. My script had no idea what to do with that.
After reviewing my fix for that issue, I spotted another wrinkle: some sessions stretched overnight, which meant that if a date was listed in addition to a time, I needed to grab that too. A little bit more complicated, but simple enough to fix.
Then I spotted something particularly weird. The Daily Digest for April 4, 2017, showed the Senate convening Tuesday morning and adjourning Thursday night. Was the Senate actually in session for 57 hours straight?!
Not quite. I checked the full record of the Senate session for April 4 (not the Daily Digest’s summary, but the complete transcripts) and found references to “recesses” or breaks that they take without formally ending that day’s session. The Senate had gone home to eat and sleep for over 10 hours but the Digest didn’t mention it.
This meant two things. First, I needed to go back and re-check the full records to find any references to recesses during each day’s session. Second, all of those session lengths needed to reflect the net time — total hours minus any recesses — so I wasn’t comparing a truly uninterrupted marathon session against one that just looked like a marathon on paper.
Deciding what counts as a “day”
Re-running the scripts on the full records solved the recess problem. But it surfaced one more question that I hadn’t totally solved yet: when a session runs past midnight, which day do the extra hours belong to?
According to Congress, a single “session” lasts until it is formally adjourned, which can mean that it lasts across several calendar days, even if it is interrupted by recesses. I flip-flopped a few times on whether I should follow what Congress does or just use calendar days. Afterall, telling someone that a session on April 4 lasted 35 hours isn’t exactly intuitive.
According to Congress, a single "session" lasts until it is formally adjourned.
Two uncommon patterns helped me shape my opinion here. The first I only saw once: on October 21, 2025.
That day, the Senate began a session at 10 am. It ran long, all the way until 7:02 pm the next day. About a minute after that session was officially adjourned, a brand new session started and ended in two minutes flat. It was one of those brief sessions I had spotted elsewhere!
If I bucketed the hours by calendar day, that brief session on the 22nd would vanish entirely, swallowed up by all the hours that spilled over from the long session on the 21st.
Option two seems like the best fit, even if 33 hours in a day is a bit unintuitive.
And the problem cut the other way too. A session that ended just after midnight might make it look like a brief session happened on the following calendar day, when in reality the chamber didn’t formally meet at all.
Option two wins again.
Ultimately, I decided to follow Congress’ lead and attribute all hours of a session to the day that the session started. Nothing disappears and nothing gets invented. And the brief sessions, which turned out to be one of the most interesting parts of the story, stay exactly where they belong.
Putting it all together
Finally, I had my cleaned dataset of start and end times for both chambers of Congress going back a decade. Amazing! Now to figure out what was going on with those super short sessions. Were they actually common or did they just stick out to me because they were surprising?
Turns out, they were pretty common. Over the past decade, around 25% of Senate sessions and 28% of House sessions lasted less than five minutes.
Over the past decade, 25% of Senate sessions and 28% of House sessions lasted less than five minutes.
Number of Congressional sessions by net duration, 2016–2025
Those very brief sessions are called “pro forma” sessions and they’re mostly held due to Constitutional law. Ultimately, the law states that neither chamber can go for an extended period of time (typically three days) without meeting unless they get explicit permission from the other chamber. So, when the chamber doesn’t have other sessions scheduled, they will sometimes hold these short sessions to keep re-starting that three-day clock.
If you look at the calendar dates, you may notice them scattered throughout, particularly on Tuesdays and Fridays to help carry them through a long weekend without meeting.
Explore daily time in session for the House and Senate from 2016 to April 2026.
Net time in session by first day of the session
Of course, short, Constitutionally mandated sessions are only half of the story. But that’s probably a good place to stop the behind-the-scenes tour and point you towards the finished piece where we get more into what the long sessions are actually about.