diff --git a/Cargo.lock b/Cargo.lock
index b5e6a1c6ef7b51917c434fe169dcef23979d624f..182e8a72de629b2bb8cf8bd8969dcef1220c9a46 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -776,6 +776,7 @@ name = "org_flux"
 version = "0.1.0"
 dependencies = [
  "anyhow",
+ "fnv",
  "image",
  "orgize",
  "syntect",
diff --git a/Cargo.toml b/Cargo.toml
index 3c6d58bc68bf315eae03caab8b35bad6968687e2..6081198d5b5a887e41e37c6f046b9a7b0de726c0 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -14,3 +14,4 @@ tokio = { version = "1.0", features = ["full"] }
 warp = "0.3"
 time = { version = "0.3", features = ["macros", "formatting"] }
 image = "0.24.5"
+fnv = "1.0"
diff --git a/src/blog.rs b/src/blog.rs
index e9171b47f9539491273956210bcbff46a9ab10c9..66728dccfda4f1eb91b04ae0ed704750723144dd 100644
--- a/src/blog.rs
+++ b/src/blog.rs
@@ -1,5 +1,5 @@
 use anyhow::{bail, Error};
-use std::collections::HashMap;
+use fnv::FnvHashMap;
 use warp::hyper::StatusCode;
 
 use crate::{
@@ -56,7 +56,7 @@ impl Blog {
 }
 
 pub struct RenderedBlog {
-    pages: HashMap<UrlPath, Response>,
+    pages: FnvHashMap<UrlPath, Response>,
     not_found: Response,
 }
 
@@ -76,7 +76,7 @@ impl TryFrom<Blog> for RenderedBlog {
         b.pages.sort();
         b.posts.sort();
 
-        let mut pages = HashMap::new();
+        let mut pages = FnvHashMap::default();
 
         for p in &b.posts {
             let body = dress_page(&p.title, &p.html()?, &b.pages, &b.favicon);
@@ -130,7 +130,7 @@ impl TryFrom<Blog> for RenderedBlog {
 }
 
 fn insert_path(
-    pages: &mut HashMap<UrlPath, Response>,
+    pages: &mut FnvHashMap<UrlPath, Response>,
     path: &str,
     value: Response,
 ) -> anyhow::Result<()> {