Caution: Spoilers ahead!

Congrats to Cardinality for being the first to save the dinosaurs! Through the once inconspicuous bookshelf, they traveled back to the past to stop the prehistoric asteroid from hitting Earth. With the power of magic and creativity, they were able to DEWEY DECIMATE THE ASTEROID and save the dinosaurs. They completed the hunt in 2 hours 24 minutes at 8:24 on July 16, 2021.

We had 367 teams register, 322 teams complete at least one puzzle, and 181 teams that completed the entire hunt!

And a special shoutouts to the following teams:

The Bigboard, stats (for puzzles and the overall hunt), and list of finishers have all been released and can be accessed using the buttons at the top of the page.

If you enjoyed our hunt, we would really appreciate it if you considered donating to our Ko-fi page! Donations will be used to pay off the cost of hosting this website ($5 / month) and the domain ($12).

If you would like your team to be anonymized/removed from this wrapup, please let us know by emailing us.

Note: This wrap-up is written from Ethan's perspective.


Difficulty and Size

Vinhan and I started seriously thinking about Hunt20 again back in January of 2021. We were mildly constrained in number of puzzles by our name (lol), but we wanted our hunt to more difficult than it was previously. We participated in many other hunts and enjoyed the difficulty of CMU and Paradox puzzlehunt. Based on our schedules, we had to either start right before or right after Galactic Puzzle Hunt, which limited difficulty, as anything too hard would burn out people before GPH or would be too difficult to complete after (what we presumed to be) another great hunt.

We also knew that we had some puzzlers that would still be new to puzzling - for example we advertised to our school friends for the original Hunt20 and knew that a couple of them would be coming back for this hunt (though not participating in any other hunts in between). Though we didn't want to cater hunt to them, we wanted all teams to have the experience of solving a couple of puzzles.

We settled on a two-round hunt that would get more difficult, with difficulty around DP, DaroCaro, or CMU. We wanted teams to be able to solo the hunt, so we didn't want to have any giant puzzles that required lots of brute force work.


Looking back at our first hunt, the puzzles are definitely not something I am proud of now. We had errors in couple of puzzles, misused (or did not use) flavortext, and boring mechanics. Many of these issues would be something fixed by having more experienced testsolvers or honestly, not even running our first hunt and getting more practice, but in the past, Vinhan and I were quite inexperienced puzzlers (I had only completed CS50x and both of us had done Copuzzle). We didn't realize the size of the puzzling world, and without that knowledge, our puzzles suffered. This time around, I was able to connect with some more experienced teams to testsolve, and for that, I am deeply grateful.

One of the first places I looked when I started thinking about Hunt20 again was last year's feedback form. Our first hunt was very rough, but I really appreciate the feedback teams gave us on puzzles and hunt organization - it really opened our eyes on how to improve.

If you were wondering where last year's hunt was, I actually deleted last year's website. I didn't want anyone to find that hunt and decide not to participate in this year's because of how low quality our previous hunt was. Trust me: it's not something worth looking at.

Something that I wish I had was more experienced writers/puzzlers in general on the team. Due of lack of time, Vinhan unfortunately couldn't write any puzzles this year which meant the variety of puzzles produced wouldn't have been as widespread (in terms of theming, knowledge, mechanics, etc.) as if there were more writers. Perhaps unsurprisingly, writing 19 puzzles for one hunt is difficult.

Finally, writing puzzles without any Among Us or COVID references was very important to me 😛


After our first hunt, I disliked punishing teams for asking hints. Last year's Gotta Catch 'em All was pretty much unfair without the hint, and I didn't want anyone to feel stuck, yet pressured not to reach out for help in fear of losing points. Further, I aimed to have freeform hints, as I felt that freeform hints made hunts much more fun for both solvers and hint responders.

Even though our team was only 2 people, we were hoping that our relatively 'easier' puzzles would mean less teams would be asking hints, and that we would be able to answer them in a timely manner of a couple minutes (not counting when we were both sleeping). Further, we only released hints 2 per day, which we felt was a reasonable number to answer.

Hunt Style

Puzzle unlocks were pretty much linear - completing one puzzle would unlock another. We aimed to have unlocks alternate between 'easy' and 'difficult' so that teams had a larger variety, did not only skip the difficult puzzles, and didn't hit a solid wall. We based difficulty off of solve times of our testsolvers.

We are very happy that we made the change from Wix / Google Forms to gph-site, as it's a lot more elegant and solver-friendly.


Theme and Story

One of the first themes we discussed was books, and we decided to stick with the concept. The plot twist to go back in time to save the dinosaurs came up after I was writing the first version of the metapuzzle, a crossword, where I had one answer which was SAUROPOD. The word stuck with me, and I wanted to somehow incorporate it into the story, which then turned into the dinosaur story we have now. Although I later rewrote the first meta many times, the dinosaur theme never left. It felt only natural to start out with young adult books and transition to children's books to symbolize 'going back in time'. Further, crayons seemed to be thematic to the children's theme (for the art).

We knew that many puzzlers would not be familiar with the books we chose, so while theming was important, we ensured that all book-content would be easily searchable.


I had a few unused mechanics from the first iteration of Hunt20, but there were a lot of other ideas that I needed to develop. I looked at pretty much all the puzzles I could find from past hunts, the MIT Mystery Hunt Index, and the Puzzling StackExchange, which were all valuable resources. Another read I liked is the MIT Puzzle Writing Introduction. Due to the small team size (of 2), whenever I had an idea, I pretty much just ran with it. We organized puzzles using Discord and Google Sheets, as I didn't think Puzzlord would be needed for us (although it is most definitely a cool and useful tool for larger hunts).

When writing puzzles, my goal was to have a list of possible answers that fit the meta, then find a corresponding book and mechanic to fit the answer. In actuality though, I ended up having a mechanic and finding an answer to fit it. While this isn't necessarily 'bad', I feel that oftentimes, the answers don't feel like a satisfying conclusion to the puzzle. Even worse, some puzzles answers aren't exactly real world phrases (green paint answers). Further, we made the decision to limit titles to just the book names, which potentially caused red herrings as puzzles didn't always deal with the book information, instead just using character names or references to the books. We debated changing the names to all the puzzles, but we felt the hunt was more thematically strong in its current state.

Lastly, I added 'Keep going!' messages to allow solvers to check nearly all related cluephrases that could have possibly been extracted while solving. While I can't see the number of submissions of these cluephrases, I hope that they helped!


When solving, I love it when I'm able to smoothly copy a puzzle to a Google Sheets / other medium to work in. We aimed to have a 'copy to clipboard' button or Google Sheets equivalent for all puzzles that were not easily copyable, which we were able to accomplish (though it led to some errors when testsolving, when we would only change the version on the website - definitely something we will remember to take note of in the future). Another tool we wish we implemented was DaroCaro's 'drawing' tool or something similar, but we just didn't have the time.

For Google Sheets copies, if you click the little arrow next to the sheet on the bottom, click "Copy to" then "Existing spreadsheet", you can copy all the formatting in its original state to a sheet that you/your team have been working on. We had some teams comment that border formatting got messed up when copying, and this is the solution!

Puzzles were intended to be seen on a desktop, but we did create override styles to allow them to be solvable on mobile as well. It's really nice to be able to pull out my phone when I'm away from my computer to take a look at some puzzles. There was at least one team that completed the hunt entirely from their phone :)

We didn't consider solvers who wanted to print puzzles out, and that is something we will pay more attention to if we run the hunt again. However, creating full blown PDFs for each puzzle can be difficult, especially maintaining consistency, as errata needs to be fixed in 3 different places.

I am happy to say that Treasure Island's playable version was well-received though! Perhaps a playable triangular Slitherlink would have been nice as well.

We received emails concerning colorblind accessibility and those who are visually impaired. I did my best to include alt text and colorblind friendly versions on as many puzzles as possible without spoiling anything, but some puzzles are unfortunately not solvable if one is visually impaired.


Our first hunt severely lacked experienced testsolvers and we did not want to fall into that same hole again. Unfortunately, due to our small team size, we were only able to test puzzles in their initial state once or twice, with Vinhan (and occasionally Ty and Preston). We were able to have 3 full hunt playthroughs however, thanks to team Please Clap, Puzzle Hunt CMU, UMD Puzzle Club. Vinhan and I were in Discord calls with these teams, muted, and watched their thought process. Each full-hunt testsolve gave us a lot of insight into how teams solved our puzzles and led to improvements in puzzle clarity. It was also a lot of fun watching teams get a-ha's and find break-ins that we intended them to find.

When solving, we specifically instructed these teams not to speedrun our puzzles. Rather we requested all team members to solve each puzzle together to maximize the number of eyes on each puzzle, for feedback/error checking purposes. Through these playtests, on average, teams finished the hunt in around 3-4 hours and finished off the rest of the puzzles they skipped in ~2 hours.

The DaroCaro team also helped test our puzzles, though not in the traditional "full hunt playthrough", rather solving puzzles as they had time. Their feedback (as well as all the other teams) is greatly appreciated!



Overall I'm very proud of the hunt that Vinhan and I were able to make. We have most definitely improved from our first hunt, and while this hunt wasn't perfect, it was an educational experience to help us become better puzzlers and writers. I had a lot of fun seeing people solve our puzzles on Google Sheets, watching our Discord channel being flooded with submissions, and answering hints.

I'm still amazed that Vinhan and I were able to construct this all. Back in January, all I had were a couple of puzzles on a Google Sheets; I had no idea to how to use gph-site or anything, and I was extremely skeptical that I'd be able to learn. As I started to load puzzles and hosted the website to a custom domain, I was amazed that everything was coming together.

I made one change to the leaderboard a couple of hours after the hunt started - adding the "20" symbol to teams that completed all 20 puzzles. This seemed to encourage a couple of teams to go back and solve (or backsolve) the final puzzles they skipped to get the elusive 20 :)


Though I wanted the hunt to be strongly themed to books, most puzzle content did not referenece book content at all, besides some flavortext references. I'm still happy with the final product, regardless, as puzzles that rely on endlessly searching fandom pages does not seem fun.

Based on "fun"-ness, the highest ranked puzzle was the second meta, Jurassic Mark, the second highest Where the Wild Things Are, and tied for third, The Three Little Pigs and The Very Hungry Caterpillar. The second round puzzles were ranked significantly higher in "fun"-ness than the first round, which was expected as the first round is also relatively easier (and has less layers).

Most people's least favorite puzzle was The Lorax, mostly because they didn't solve it (or backsolved). Matilda was a very mixed bag - some people put it as their favorite puzzle, while others as their least favorite (likely due to the inelegancies in the X and DISCO->DISCOUNT. A lot of teams got stuck on the cluephrase as well).

I think better presentation would have improved a lot of team's experience with some of the puzzles - for example, many people were stuck on PRESTO NEREID (or just PRESTO) in The Hunger Games. Making some sort of visual that better clued you were looking for a 6 letter word that was made up of the combination of PRESTO and NEREID probably would have improved the solving experience. Further, the X clue in Matilda was quite unfortunate, and perhaps a different colored X could have helped it slightly. There was the option to clue SEXT -> SEXTANT, but we decided against that as it didn't seem very appropriate for a round based on children's books. There was also some complaints about image quality in I Spy (not being able to zoom in easily), and putting the images individually into a table may have been more effective. I am not sure if this would take a long time to load though.


We ended up receiving hint requests (not counting hint responses/additional help through email, which I'd estimate at around 150 emails). We were very generous with hints, allowing teams to reply back to the hint email to get additional help at no penalty. If teams ran out of hints, we would grant them more if they asked(provided that they were not abusing the system). We wanted as many teams as possible to experience the feeling of solving a meta (or even the entire hunt!), which also explains why we extended the hunt past the normal weekend.

For the first 3 days, during the day, we were able to stay on top of hint requests, usually answering them within 3 minutes. Email responses were a little slower though, as I didn't always get notifications for the emails :( However, for the time period between ~4am and ~8am ET, both Vinhan and I were asleep so no hints were answered. On Saturday and Sunday, I 'volunteered' myself to stay up this late (4am) to answer hints. On Saturday ~8am, Vinhan and I woke up to 25 hint requests, and on Sunday, luckily only 12. In the first 3 days, the longest a team went without a response was 4 hours. For most US based solvers, the hint response speed was fine, but for others, the time discrepancy is unfortunate. We had written "prewritten" hints for all the puzzles, but as time passed, many teams had asked very similar questions so we were able to copy and paste from previous responses (which led to the speediness).

After Monday though, hint response speed slowed down slightly as Vinhan and I had other commitments. I decided to go to bed at a more reasonable 3am. One "funny" story is that I actually fell asleep in the middle of answering a hint in bed, leaving a team hanging for 2 hours while Vinhan was away :( I'll definitely need to catch up on some zz's before GPH :')

Teams generally agreed that the hints were helpful, though perhaps sometimes a little *too* helpful. We tried not to spoil any major aha's, but I do agree we often gave hints to help solvers with not just the immediate step, but step(s) after. In my opinion, I would rather have a hint be little too helpful than not helpful enough, as I personally feel really bad asking hinters for help again and again on the same puzzle. I'm sure other teams may disagree with me here though.

I had a ton of fun answering hints and really enjoyed reading creative hints (shoutout to Spin My Hovercraft for writing entire poems as hint requests). We had a couple of memes in hint requests, and I loved when teams "talked" to me on the shared Google Sheets. Seeing teams find our aha's was very rewarding. It made the process of staring at my computer while I was on hint duty for hours at a time more bearable :)
(The video in question)


Going in, we expected that competitive teams would finish within a few hours, then more casual teams would continue solving throughout the week. This worked exactly as planned - we had many teams finish quickly, but keeping the hunt open past the weekend allowed an additional 80 teams to finish past the "typical" 6PM Sunday end (for a 2 day weekend hunt). We also had over 160 teams register past the hunt start date (and many of them completing the hunt!), and 49 teams that registered past 6PM on Sunday (the 18th).

We receieved a couple of comments saying that the difficulty scale was great, perfect for a solo hunt and a good warmup to GPH for both casual / competitive teams. On average, puzzlers felt the hunt was slightly easier than expected (based on intuition and advertised difficulty), but we think that's perfectly fine - we hope teams felt good that they were solving puzzles! There were a couple of teams that told us that this was their first time they completed a puzzlehunt, congrats to them!

Here's a chart comparing the relative length/difficulty of our hunt, compared to some recent hunts. Data and chart came from Huntinality's wrapup.

I think it's worth noting that the next fastest team after Cardinality (ClueCario) took 3 hours 44 minutes (1hr 20m after Cardinality's finish). In contrast, the time between completion for the second, third, fourth, and fifth place teams was only about 6 minutes. When Cardinality finished our hunt, the next fastest team still had 2 puzzles to complete before even unlocking the final meta (which puts into perspective how fast their team is!).

Here's a graph of all the finishers by time.



This site will never be deleted, however in about 9 months (around May), I probably will not renew the domain name. In all honesty, Vinhan and I don't think we'll have the time to host an entire other Hunt20 - but we will see. There's a lot of fatigue from creating and hosting this hunt. We plan to still be part of the puzzling community though :)

[UPDATE] The site is now updated to the final static state and will be available at this domain until said domain expires. Then, it can be found at ethannp.github.io/hunt20-static/ (I'm hosting the static version using Github Pages). Depending on traffic, I may rebuy the domain for one more year.


Puzzle writers: Ethan and Ty for Treasure Island
Testsolvers: Vinhan, Preston, team Please Clap (Jonah, Ben, and Ian), Puzzle Hunt CMU, UMD Puzzle Club (Dawson Do and Ryan Thomas), and DaroCaro (Darren and Caroline)
Art: Ethan and Vinhan
Web dev: Ethan

A special thanks to Jonah (and the other Please Clap members) for giving us lots of feedback on our puzzles - they were the first experienced team we tested on and helped me improve puzzles to a much better state.

Story art mainly consists of traced vector versions of reference images found online. Crayon drawings were drawn by hand, also using reference images.


The website is a fork of GPH site, which is written in DJango and Python. GPH-site was amazing to use; it was well documented and easy to pick up, even with little web hosting experience. I had a little bit of HTML/CSS/JS/Python experience in the past, and Django was luckily learn. The website is hosted using PythonAnywhere on the Hacker plan. I load tested the site using Locust and found that the current plan would likely be adequate, even at the time the hunt started (in testing, the site did fine with 1000 concurrent connections). At the start of the hunt, the site was a little slow to load, but there were luckily no crashes or downtime.

Inkscape, crayons, and paper were used to create the art (the second round bookshelf / puzzles are handdrawn). Victory page confetti was used from here. Charts in this wrapup are made with ChartJS.

Treasure Island's playable version was created with Scratch. Why Scratch? I had lots of experience with it as a kid, and it seemed to be the easiest way to export and change if needed. If there was an error on the grid or something, I could do change it even if I was away from my main computer, and it would automatically update (without me having to manually export or anything).


It's unfortunate that there's an entire section dedicated to cheating, but I feel like it's something I should talk about.

During the hunt, there were 3 clear instances of cheating. Two teams had created an alternate account and many puzzles within a few minutes. It's understandable if the first 3 puzzles were solved instantly (as a team could have been created right after solving the first 3), though any further would be impossible without prior knowledge of the puzzles ahead. We asked them how they were doing this, and we got no response. The accounts never logged back in after that.

Secondly, there was a team that had asked for help for our puzzles on Reddit. They had posted the direct text and a screenshot of the puzzles, hiding the fact that this was from an ongoing hunt/our hunt. While our rules do not explicitly disallow teams from asking public forums, I'd argue it's considered pretty bad sportsmanship and possibly constitues "helping other teams". Further, the specific subreddit this was posted to disallowed posting "puzzles from ongoing contests".

We know who did this, based on publicly available information and timing and have told them not to do this in the future.

A case of cheating also appeared in our last hunt, but I won't expand much further as our previous hunt is not something I want to return to.



These came in the form of flag submissions :)


Some of our favorite guesses:

  • I am Number Four
    • BREADWINNER by MCSquareD - Wrong hunt perhaps? 😉
      DANGIT by no gnus is good gnus
  • The Hunger Games
    • ETHANPLEASEPUTMEINTHEWRAPUP by 25 cents a puzzle - your wish has been granted
  • Divergent
  • META: Percy Jackson
    • PIRSYMAGICTREEHOUSE by come back to us later and Useless Guys Only
  • Matilda
    • (G/A)STRINGENT by multiple teams
  • Frog and Toad
    • FLAGTEAM by many teams :(
  • Ugly Duckling
    • NOTLIKEDUCK by Red Giselle -
  • META: Jurassic Mark

    Pretty much all of the wheel-of-fortune guesses were really funny to read as they were coming in

Team Flags

Here are (almost) all the flags submitted!

Anything else? Contact us at hunt20info@gmail.com

See you all (hopefully in GPH!!),
Hunt20 ❤️