I’m looking for reliable free stock photo and icon sites for a design project, but many options have unclear licensing or limited selections. Which websites offer high-quality, royalty-free assets that designers can safely use?
Commercial or client use changes the answer, especially when photos show recognizable people, logos, artwork, or private property. For general design work, Pexels, Unsplash, and Pixabay offer strong free photo libraries, while Heroicons and Google Material Symbols are dependable icon choices with clear open licenses. Still, save a copy of the license when you download an asset, and avoid using stock imagery as a logo, trademark, or unedited product for resale. “Royalty-free” does not automatically clear model, property, or trademark rights.
Don’t grab files from icon aggregator sites that strip out the original license information. Go straight to projects like Lucide, Tabler Icons, or Font Awesome Free, where the license applies to a clearly defined set. For photos, Openverse is useful for finding less generic images, but check each item’s source because Creative Commons terms can vary. Keeping a screenshot or text copy of the license with the project files is boring, but it prevents confusion later.
If this is going into a product UI rather than a one-off mockup, consistency matters more than the size of the library. A set with 10,000 icons is not very useful if half the icons use different stroke widths, corner radii, or optical sizing. Pick one family and stay inside it. Phosphor is a strong choice when you need several weights and filled variants. Bootstrap Icons works well for straightforward application interfaces and does not require Bootstrap. Lucide and Tabler, as @ironsignal_64 mentioned, are cleaner choices for outline-heavy designs.
For implementation, download SVGs rather than PNG icons whenever possible. Check that they have sensible viewBox values, support currentColor, and do not contain unnecessary clipping paths or embedded styles. Decorative icons should be hidden from screen readers, while icon-only controls need an accessible label. Those details are easy to miss when assets come from a design plugin instead of the icon project itself.
On the photo side, Adobe Stock’s free collection is worth checking when release status and a formal license record matter. It is smaller than the paid catalog, but the assets use the same general licensing system, and each download is attached to your account. StockSnap is useful for simpler CC0 searching, while Burst tends to have practical business and ecommerce imagery. Pexels and Unsplash still have broader selections, but the most popular images can show up in dozens of unrelated websites, so reverse-image searching a candidate before using it in a major campaign can prevent an awkwardly familiar hero image.
I would not treat Freepik or Flaticon as equivalent to an open-source icon library. Their free assets commonly involve attribution requirements, and the rules may depend on the account or asset type. They can be fine when credits fit the project, but they are less convenient for client handoff than an MIT-licensed SVG set.
Be careful with Figma Community files, Canva elements, and random “free icon packs” from marketplaces. Being free to duplicate or download does not necessarily grant broad commercial rights. A community file may combine assets from several sources without preserving their original terms. If the creator does not identify the icon family and license, I would skip it.
For client work, keep the asset filename, creator or asset ID, source page, download date, and license text together. A screenshot of a general license page is useful, but it is much better when you can connect that license to the exact file. That small asset log makes later redesigns, audits, and client transfers far less messy.
Licenses aren’t frozen. The site you pull from today can change its terms next year, and Unsplash is the obvious example since it moved under Getty and rewrote how its license reads. So even a clean download can end up sitting under wording you never actually agreed to. That doesn’t ruin anything you already shipped, but it does mean the ‘save the license text’ habit @router8104 mentioned matters more than saving the URL, because the page behind that URL can quietly turn into something else.
@novagurux9333 is right that consistency beats library size for a real UI, and honestly that’s the part most people get wrong. They collect icons from four sources because each one had a slightly nicer version of some glyph, then wonder why the toolbar looks off. One family, one weight, done. If you truly cannot find a glyph inside your chosen set, it’s usually faster to draw the missing one to match than to import a stranger from another pack.
Where I’d push back a little is on the asset log. Great idea in theory, but on most projects nobody keeps it current past the first week. If you actually want it to survive, tie it to something you already do, like a folder committed alongside the code with a plain text file per source. If it lives in someone’s Notion that only the designer opens, it’s gone the moment they leave.
For photos, the boring truth is that the ‘free’ tier of the big sites is fine for mockups and internal stuff, but the moment a recognizable face or a branded product shows up in something client-facing, free stops being the relevant question. Model and property releases are the thing that bites, and no amount of CC0 fixes that. If it’s a paid campaign with real spend behind it, buy the licensed image with the release attached and skip the guessing.
You probably won’t get every asset for a client project from a single free library. The quickest setup is usually two or three bookmarked sources with different jobs. Pexels is solid for general lifestyle photography, Pixabay is handy when you need photos plus illustrations, and Unsplash has plenty of polished editorial-looking images. For icons, I’d shortlist Lucide, Phosphor, Remix Icon, or Radix Icons, then pick whichever family matches the interface and stop shopping around.
A category that gets overlooked is public-institution collections. Museum, government, and university archives can be much better than stock sites for historical images, space, science, maps, art, and unusual textures. Wikimedia Commons can help find that material, but the license is attached to each file, not the whole site. Some images are public domain, while others require attribution or have restrictions.
I wouldn’t automatically buy a photo just because it is client-facing, though. Often the simpler fix is choosing an image without recognizable people, visible trademarks, artwork, or distinctive private property. That cuts down the rights questions and usually looks less like generic advertising anyway. Paid stock makes more sense when the campaign specifically needs identifiable models and documented releases.
A final annoyance is that “free” libraries increasingly contain AI-generated images or heavily composited work. Check hands, text, reflections, product details, and whether the client has rules about synthetic imagery before committing to a hero image. Whatever source you use, download the largest original file and record the exact asset page and license at the same time. Doing that later is where the workflow usually falls apart.
The easy mistake is downloading a sponsored result sitting beside the free files and assuming the site’s license covers it. Some platforms treat ads and third-party stock as completely separate content, so I now check that the download button belongs to the actual asset page rather than an advertiser.
For a simple shortlist, I’d use Pexels for general photos and Pixabay when illustrations or other media are useful. Pexels allows free personal and commercial use without required attribution, but its restrictions still rule out things like unedited resale and implied endorsement. For icons, Lucide, Tabler, or Phosphor seem much less confusing than browsing a giant aggregator. Pick one family before designing, then download from that project’s own page.
What finally made licensing click for me was separating “free to download” from “safe for this exact use.” A plain background photo for a blog is fairly simple. A photo of a recognizable person beside a medical claim, or a brand icon used as if it were your own logo, is a different question. I’d keep the source page and license text, but I’d record which project and placement the asset was approved for too.
For a quick mockup, Pexels plus Lucide is usually enough; for client delivery, choose the asset first, then verify its exact license and save that record with the file. Prefer SVG icons and original-size photos, and check whether the license covers modification, commercial use, and redistribution. If any of those terms are vague, skip the asset rather than trying to interpret them later.