How to Display Squarespace Events in a Grid Layout
Squarespace does not give you a grid option for your Events page out of the box. The default layout stacks events in a single column list, which works fine for a handful of events but starts to feel long and hard to scan once your list grows. This CSS fix converts that list into a clean three column grid, with full width thumbnails, consistent spacing, and a single column fallback on mobile.
No plugins, no JavaScript. Just CSS pasted into Custom CSS.
The Code
This converts your upcoming events list into a three column grid:
.eventlist.eventlist--upcoming {
display: grid !important;
grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
gap: 20px !important;
}
.eventlist-column-date {
width: 100% !important;
}
.eventlist.eventlist--upcoming .eventlist-event {
width: auto !important;
max-width: none !important;
min-width: 0 !important;
margin: 0 !important;
float: none !important;
display: flex !important;
flex-direction: column !important;
}
.eventlist.eventlist--upcoming .eventlist-column-thumbnail,
.eventlist.eventlist--upcoming .eventlist-column-info {
width: 100% !important;
max-width: none !important;
float: none !important;
}
.eventlist.eventlist--upcoming .eventlist-column-info {
padding: 0 !important;
margin-top: 20px;
}
.eventlist.eventlist--upcoming .eventlist-column-thumbnail {
padding-bottom: 66.66% !important; // adjust thumbnail ratio here
}
@media screen and (max-width: 767px) {
.eventlist.eventlist--upcoming {
grid-template-columns: 1fr !important;
}
}
What this does:
repeat(3, minmax(0, 1fr)) creates three equal columns that flex with the container width
padding-bottom: 66.66% forces a consistent 3:2 aspect ratio on every event thumbnail
The media query drops the grid to a single column on screens below 768px
Not happy with the 3:2 ratio? Swap padding-bottom to match your preferred crop:
| Ratio | Value |
|---|---|
| 1:1 (Square) | padding-bottom: 100% |
| 4:3 (Standard) | padding-bottom: 75% |
| 3:2 (Default) | padding-bottom: 66.66% |
| 16:9 (Widescreen) | padding-bottom: 56.25% |
| 2:3 (Portrait) | padding-bottom: 150% |
Here is the updated gap note:
Want more or less space between cards?
Adjust the gap value to control spacing between rows and columns independently:
gap: 20px !important; // same spacing on both row and column
gap: 20px 30px !important; // row 20px | column 30px
gap: 30px 20px !important; / / row 30px | column 20px
How to add
Go to Custom Code→ Custom CSS in your Squarespace panel
Paste the code at the bottom of any existing CSS
Replace the hex color values with your own
Hit Save and check your list on the page
Past Events Grid
If you have past events enabled on your Events page, paste this second snippet directly below the first. It applies the same grid treatment to the past events section and also hides the event meta row on upcoming events to keep the cards clean:
.eventlist.eventlist--past {
display: grid !important;
grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
gap: 50px 20px !important;
margin-top: 20px;
.eventlist-past-upcoming-divider {
display: none;
}
}
.eventlist-column-date {
width: 100% !important;
}
.eventlist.eventlist--past .eventlist-event {
width: auto !important;
max-width: none !important;
min-width: 0 !important;
margin: 0 !important;
float: none !important;
display: flex !important;
flex-direction: column !important;
}
.eventlist.eventlist--past .eventlist-column-thumbnail,
.eventlist.eventlist--past .eventlist-column-info {
width: 100% !important;
max-width: none !important;
float: none !important;
}
.eventlist.eventlist--past .eventlist-column-info {
padding: 0 !important;
margin-top: 20px;
}
.eventlist.eventlist--past .eventlist-column-thumbnail {
padding-bottom: 66.66% !important;
}
@media screen and (max-width: 767px) {
.eventlist.eventlist--past {
grid-template-columns: 1fr !important;
}
}
Final Result
Once saved, your Events page will display upcoming events in a clean three column grid with consistent thumbnail ratios and spacing between cards. If you have past events enabled and added the second snippet, those will match the same grid layout. On mobile, both sections drop to a single column automatically.