Hugo vs Jekyll

Comparativa entre Hugo y Jekyll, los dos generadores de sitios estáticos más populares para blogs con Markdown

Hugo y Jekyll son los dos generadores de sitios estáticos más populares para crear blogs y sitios web con Markdown. Ambos son excelentes, pero tienen diferencias importantes.

Comparativa rápida

CaracterísticaHugoJekyll
LenguajeGoRuby
Velocidad de compilaciónExtremadamente rápidoLento en sitios grandes
InstalaciónUn solo binarioRequiere Ruby + gems
PlantillasGo templatesLiquid
GitHub PagesRequiere CI/CDNativo
ContenidoMarkdownMarkdown
Temas+300 temas+400 temas
ComunidadGrande y crecienteGrande y establecida
DocumentaciónMuy completaCompleta

Velocidad

La mayor diferencia es la velocidad de compilación. Hugo puede compilar miles de páginas en milisegundos, mientras que Jekyll puede tardar minutos con sitios grandes.

PáginasHugoJekyll
100~100ms~5s
1.000~500ms~30s
10.000~5s~5min+

Instalación

Hugo

# macOS
brew install hugo

# Windows
choco install hugo

# Linux
snap install hugo

Jekyll

# Requiere Ruby instalado
gem install bundler jekyll

Crear un sitio básico

Veamos los comandos necesarios para crear un blog desde cero con cada herramienta.

Crear un blog con Hugo

# Crear un nuevo sitio
hugo new site mi-blog
cd mi-blog

# Añadir un tema (por ejemplo, PaperMod)
git init
git submodule add https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod

# Configurar el tema en hugo.toml
echo 'theme = "PaperMod"' >> hugo.toml

# Crear tu primer post
hugo new content posts/mi-primer-post.md

# Iniciar el servidor de desarrollo
hugo server -D

Tu sitio estará disponible en http://localhost:1313. Cada vez que guardes un cambio en un archivo Markdown, Hugo recargará la página instantáneamente gracias a su sistema de live reload.

Crear un blog con Jekyll

# Crear un nuevo sitio
jekyll new mi-blog
cd mi-blog

# Instalar dependencias
bundle install

# Iniciar el servidor de desarrollo
bundle exec jekyll serve

Tu sitio estará disponible en http://localhost:4000. Jekyll incluye un tema por defecto (Minima) y ya genera un post de ejemplo. Para crear un nuevo post, basta con añadir un archivo en la carpeta _posts/ con el formato YYYY-MM-DD-titulo.md.

Estructura de un post en ambos

Tanto Hugo como Jekyll usan front matter en YAML al inicio de cada archivo Markdown:

---
title: "Mi primer artículo"
date: 2025-01-15
tags: ["markdown", "tutorial"]
---

Aquí va el contenido del artículo en Markdown.

Diferencias en plantillas y temas

Hugo usa Go templates y Jekyll usa Liquid, lo que marca una diferencia importante a la hora de personalizar tu sitio.

Plantilla de Hugo (Go templates)

{{ range .Pages }}
  <article>
    <h2><a href="{{ .Permalink }}">{{ .Title }}</a></h2>
    <time>{{ .Date.Format "2 January 2006" }}</time>
    <p>{{ .Summary }}</p>
  </article>
{{ end }}

Plantilla de Jekyll (Liquid)

{% for post in site.posts %}
  <article>
    <h2><a href="{{ post.url }}">{{ post.title }}</a></h2>
    <time>{{ post.date | date: "%d %B %Y" }}</time>
    <p>{{ post.excerpt }}</p>
  </article>
{% endfor %}

Go templates de Hugo son más potentes pero tienen una sintaxis menos intuitiva. Liquid de Jekyll es más fácil de aprender, especialmente si vienes de lenguajes como Python o Ruby. Ambos soportan parciales, layouts, condicionales y bucles.

Despliegue

Una de las decisiones más importantes al elegir un generador de sitios estáticos es dónde y cómo desplegarlo.

GitHub Pages

Así funciona cada uno en GitHub Pages:

  • Jekyll: Integración nativa. Solo tienes que subir tu repositorio a GitHub y activar Pages en la configuración. GitHub compila Jekyll automáticamente sin necesidad de configurar nada.
  • Hugo: Requiere un paso adicional. Puedes usar GitHub Actions para compilar el sitio y publicar el resultado en la rama gh-pages. Hugo tiene una guía oficial para esto.

Netlify

Ambos funcionan de forma excelente en Netlify. Solo conectas tu repositorio y configuras el comando de build:

  • Hugo: Comando hugo, directorio de publicación public/.
  • Jekyll: Comando jekyll build, directorio de publicación _site/.

Netlify detecta automáticamente ambos generadores y sugiere la configuración correcta.

Vercel

Vercel soporta ambos generadores. El proceso es similar a Netlify: conectas el repositorio y defines el comando de build. Vercel es especialmente rápido en los despliegues y ofrece funciones serverless adicionales.

Cloudflare Pages

Cloudflare Pages es otra opción gratuita con CDN global incluido. Soporta Hugo y Jekyll con una configuración similar. Su red de distribución de contenido es una de las más rápidas del mundo, lo que beneficia el rendimiento de tu sitio.

PlataformaJekyll nativoHugo nativoHTTPS gratisCDN
GitHub PagesCon Actions
Netlify
Vercel
Cloudflare Pages

¿Cuándo elegir Hugo?

Hugo es la mejor opción en estos casos:

  • Sitios grandes: Miles de páginas se compilan en segundos.
  • Instalación simple: Un solo binario, sin dependencias.
  • Rendimiento: La velocidad de compilación acelera el desarrollo.
  • Multilenguaje: Soporte nativo para sitios en múltiples idiomas.
  • Sin dependencias de Ruby: Si no tienes Ruby instalado ni quieres instalarlo.

¿Cuándo elegir Jekyll?

Jekyll es la mejor opción en estos casos:

  • GitHub Pages: Integración nativa sin configuración adicional.
  • Comunidad Ruby: Si ya trabajas con Ruby.
  • Simplicidad: Para blogs pequeños y sencillos.
  • Plugins: Gran ecosistema de plugins en Ruby.
  • Documentación madura: Años de tutoriales y recursos disponibles.

Alternativas modernas

Hugo y Jekyll son herramientas consolidadas, pero el ecosistema de generadores de sitios estáticos ha evolucionado. Estas son las alternativas más relevantes en la actualidad:

  • Astro: Framework moderno que genera sitios estáticos por defecto pero permite añadir interactividad con React, Vue, Svelte o cualquier otro framework. Su enfoque de «islands architecture» carga JavaScript solo donde es necesario. Soporta archivos Markdown y MDX de forma nativa. Es la opción más popular entre los desarrolladores front-end actuales.

  • Eleventy (11ty): Generador de sitios estáticos escrito en JavaScript que presume de ser «zero config». Es extremadamente flexible en cuanto a lenguajes de plantillas (Nunjucks, Liquid, Handlebars, JavaScript, etc.) y procesa Markdown de forma nativa. Su filosofía es similar a Jekyll pero sin la dependencia de Ruby.

  • Next.js: Aunque es principalmente un framework de React con renderizado del lado del servidor, Next.js puede generar sitios completamente estáticos con next export. Es ideal si tu sitio necesita funcionalidades dinámicas además de contenido en Markdown. Muchos blogs técnicos lo usan con MDX para combinar Markdown con componentes React.

  • Gatsby: Framework basado en React con un sistema de plugins muy extenso y GraphQL para manejar datos. Fue muy popular entre 2018 y 2022, aunque su adopción ha disminuido frente a alternativas como Astro y Next.js. Sigue siendo una opción sólida para sitios con fuentes de datos complejas.

Si estás empezando un proyecto nuevo en 2025, vale la pena evaluar Astro como alternativa a Hugo y Jekyll. Ofrece la simplicidad de un generador estático con la flexibilidad de un framework moderno, y su rendimiento es excelente.

Conclusión

Hugo es mejor para sitios grandes, rendimiento extremo y simplicidad de instalación. Jekyll es mejor si usas GitHub Pages y quieres la integración más sencilla posible. Ambos son herramientas maduras y probadas con comunidades activas. Si buscas algo más moderno, Astro y Eleventy son alternativas que merece la pena explorar. En cualquier caso, todas estas herramientas comparten una ventaja fundamental: tu contenido se escribe en archivos Markdown, lo que te da portabilidad total para migrar entre generadores en el futuro.

👋 Hola! Soy Edu, me encanta crear cosas y he redactado este tutorial. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirlo en Twitter.

para estar al día con mi contenido. 😊