Taking Control of Image Processing
Why we switched from Imgix to Imgproxy.Glimpse into GlassImage processing might sound like a technical detail, but it's the foundation of how photographs are experienced online. Every decision in the pipeline — from compression settings to caching strategies — shapes how quickly and faithfully your work appears on screen. That's why we've rebuilt our entire image delivery system, moving from Imgix to a custom-built solution powered by Imgproxy.
Why We Made the Change
When you're handling millions of high-resolution photographs, each decision about how they're processed and delivered cascades across the entire platform. Until recently, we relied on Imgix to handle this crucial aspect of Glass. While Imgix served us well in many ways, two critical issues emerged as our community grew:
First, their pricing model, based on unique origin images accessed monthly, created an interesting paradox. The more our community engaged with each other's work — exactly what we want to encourage — the more unpredictable our costs became. Every time someone explored a photographer's portfolio or dove deep into search results, it impacted our bottom line.
Second, and perhaps more concerning, we had limited control over who could access these images. In an era where AI companies scrape photographs without permission and bots constantly probe for vulnerabilities, this lack of control became untenable.
In short, we wanted greater control over protecting your images while ensuring our business scales in a way that supports our growth goals.
Our Image Processing Architecture
We ended up needing an entirely different processing architecture which fundamentally reimagines how Glass handles your photographs. Enter Imgproxy, a high-performance image processing engine that we've carefully integrated into a custom-built pipeline.
At the heart of our new system is a sophisticated multi-layer caching architecture. When you view a photograph on Glass, your request flows through several carefully optimized layers:
First, it hits CloudFront's edge locations — with over 400 Points of Presence across 90 cities and 47 countries, plus 600+ embedded PoPs in 200+ cities. These locations are seamlessly connected to AWS through a redundant global network backbone, ensuring your photographs are cached as close as possible to viewers worldwide.
If the edge location doesn't have the image, the request moves to CloudFront's regional cache layer. These larger regional caches maintain a broader set of images and help reduce the load on our origin servers.
For additional protection, we've implemented CloudFront Origin Shield. This acts as a second regional cache layer, consolidating requests and significantly reducing the load on our origin servers. Even during traffic spikes, Origin Shield ensures we maintain consistent performance while minimizing origin requests.
If the image variant isn't found in any of CloudFront's cache layers, we check our S3 cache. This persistent cache layer stores processed images indefinitely, providing a permanent store of optimized variants.
Only when an image variant isn't found in any cache layer does the request reach Imgproxy, which creates the new variant on demand, optimizing it according to our exacting standards.
This multi-layered architecture, protected by AWS WAF rules we've meticulously crafted to block malicious actors, solves one of our biggest initial challenges: CloudFront's aggressive cache eviction at the edge. By implementing both Origin Shield and our own S3-based caching layer, we ensure optimal image delivery while maintaining reasonable origin load.
Quality and Performance Considerations
Speed isn't just about convenience — it's about maintaining the emotional impact of photography. When you're exploring a photographer's work, every millisecond of delay creates friction that pulls you out of the experience. The longer an image takes to load, the more likely viewers are to scroll past it. But speed alone isn't enough. A blurry, over-compressed image that loads instantly defeats the purpose of sharing photography in the first place.
This is why we've invested so much time in finding the perfect balance between speed and quality. Each decision involves careful trade-offs:
Larger dimensions preserve detail but increase file size exponentially
More aggressive compression reduces load times but can introduce artifacts in subtle gradients
Advanced formats like AVIF offer better compression but require more processing time
Higher quality settings preserve more detail but can double or triple file sizes
We've fine-tuned every aspect of image processing to strike the right balance:
Our format selection hierarchy (JPEG XL → AVIF → WebP → JPEG) represents this balance in action. Modern formats like AVIF can reduce file sizes by up to 50% compared to JPEG while maintaining higher quality, but they require more processing power to encode. By dynamically selecting the most efficient format based on browser support and image characteristics, we ensure optimal delivery for each viewer. Our compression settings are individually tuned for each format to eliminate banding in gradients while keeping file sizes reasonable — what works for JPEG might be too aggressive for WebP, or not aggressive enough for AVIF.
Color management also receives special attention. We preserve color profiles like P3 throughout the processing pipeline, ensuring that your carefully calibrated photographs appear exactly as intended, regardless of the display they're viewed on.
When we process images, we carefully strip metadata (including GPS coordinates and other sensitive information) while retaining essential copyright information, protecting both your privacy and your rights.
Improved Security
Perhaps the most significant advantage of our new system is the control it gives us over image access. Through CloudFront and WAF, we can now:
Deploy sophisticated rules to identify and block AI training crawlers
Prevent automated scraping attempts
Manage access patterns to protect both our platform and your work
This control extends to our cost structure as well. Rather than being subject to unpredictable per-image pricing, our costs now scale predictably with actual usage, allowing us to grow sustainably alongside our community.
Infrastructure That Scales
This transition represents more than just a technical upgrade — it's an investment in Glass's future and a commitment to our community. We've built our image processing infrastructure on AWS Elastic Container Service (ECS) with Fargate, using Application Load Balancers and autoscaling groups to handle traffic spikes seamlessly. This architecture allows us to automatically scale our image processing capacity based on demand, ensuring consistent performance even during peak usage.
As we continue to grow, this robust foundation lets us focus on what matters most: serving your photographs with the quality and respect they deserve.
Moving Forward
By bringing our image processing pipeline in-house, we’ve gained the control needed to honor your photographs with the respect they deserve. Our business now scales in line with our growth goals, allowing us to be even more committed to your privacy and ensuring your photos are seen only by those you intend. Every technical decision—from caching architecture to color management—serves a single purpose: displaying your work exactly as you envisioned.
We're excited about what this means for the future of Glass and for you, our community of photographers. As always, we want to hear your thoughts and experiences. Let us know what you think as we continue to refine and improve Glass.



Community, not comparison
Build relationships with and learn from other photographers while enjoying a chronological feed and no public counts.
Learn moreFocused features
Gorgeous apps, public profiles, appreciations, categories, ad free, high quality images, camera and lens feeds…
Learn more