Skip to main content

Top 25 most photographed spots in Portland, Oregon



Photo by Kim G.

Yelp’s Top 25 Most Photographed Spots is a list unlike any other “best of” out there. Sure, you’ll see your obvious local favorites on the list, but it’s also chock full of hidden gems and off-the-beaten-path joints like botanical gardens, brunch spots, and museums tucked away across the city. From fine dining to local flavor — find them all in Yelp’s Top 25 Most Photographed Spots in Portland, Oregon.

Did your favorite place make it into the top 25? Let us know on Twitter and Instagram. Remember, we only know how good a spot is if you take the time to review it. So share your thoughts on Yelp, and maybe your favorites will be on next year’s list! 

Topping this year’s most photographed list is Voodoo Doughnuts, first opened in 2003 at 22 SW 3rd Ave in the Old Town/Chinatown neighborhood of Portland. Voodoo has since set a record for biggest box of doughnuts in the world, made the news on LA Times and talk shows, like “The Tonight Show with Jay Leno,” won awards locally and nationally, and opened 11 additional locations.

Pro tip: You’re going to want to make a note of these spots, so we made it easy for you. For great businesses at your fingertips, get the Top 25 to-go. Follow this collection on Yelp.


  1. Voodoo Doughnuts (Old Town/Chinatown)
Photo of Voodoo Doughnut - Portland, OR, United States. Voodoo Doll
Photo by Kithumini J.

What they’re known for: innovative, unique doughnut flavors

What Yelpers say: “Doughnuts with a twist is one way to describe them.  Doughnuts like you’ve never seen is probably more accurate. I am usually not a doughnut fan, but somehow this place has me reeling for them, fending for any bizarre combination for that ever sweet kick sugar high.” –Jando S

  1. Screen Door Eastside (Kerns)
Photo of Screen Door Eastside - Portland, OR, United States. chicken and waffles
Photo by Andy T.

What they’re known for: Southern-style brunch, particularly the chicken and waffles

What Yelpers say: “If you haven’t tried Screen Door then you haven’t lived. We died for their fried chicken & waffles- the absolute tastiest, seasoned, crispy-skinned waffles – ever. …By far my fav Portland brunch place. Thank you, Screen Door!” –Cynthia L

  1. Portland Japanese Garden (Washington Park)
Photo of Portland Japanese Garden - Portland, OR, United States. Entry gates
Photo by John K.

What they’re known for: well-maintained, authentic grounds

What Yelpers say: “This is an absolute must for anyone visiting Portland and was the highlight of my recent trip! …The Japanese Garden itself is absolutely amazing. If I could sum up the entire experience in one word it would be tranquil. …Definitely come here if you’re visiting the city. You won’t regret it!” –Steven W

  1. Deschutes Brewery and Public House (Pearl)
Photo of Deschutes Brewery Portland Public House - Portland, OR, United States
Photo by Vivian P.

What they’re known for: good beer and a community gathering spot

What Yelpers say: ”This has to be my favorite bar in the world. The ambience is freaking amazing. I love the setting, service, grub, and obviously the beer!” –Ruchika M

  1. International Rose Test Garden (Washington Park)
Photo of International Rose Test Garden - Portland, OR, United States
Photo by Thavery L.

What they’re known for: over 10,000 rose blooms

What Yelpers say: “This is a great place to visit if you are looking for a very serene outdoor activity. The rose garden is well laid out, and a great place to walk and take in amazing scenery. The rose garden is free and a great place to visit in Portland’s Washington Park.” – Derrick G

  1. Mother’s Bistro & Bar (Downtown)
Photo of Mother’s Bistro & Bar - Portland, OR, United States
Photo by Jon P.

What they’re known for: a comfort food brunch/lunch spot

What Yelpers say: “I’ve gone here a few times and I never been disappointed. This is where I take guests from out of town because the service is so good and the food is even better. Your coffee cup never goes empty and the food leaves you warm and full. Get there early!” –Quenton M

  1. Pine State Biscuits (Alberta)
Photo of Pine State Biscuits - Portland, OR, United States. The Reggie Deluxe.
Photo by Nicholas G.

What they’re known for: buttery, flaky, homemade biscuits

What Yelpers say: “I’m a fan of gravies, fried chicken, cheese, thick runny egg, and bread! And the Reggie Deluxe Biscuit Sandwich is the most glorious masterpiece and everything you will ever need in a fried chicken sandwich! …I have frequent thoughts of moving to Portland just to be closer to Pine State Biscuits because it’s that good! Still drooling!” –Michelle C

  1. Pip’s Original Doughnuts and Chai (Cully)
Photo of Pip's Original Doughnuts & Chai - Portland, OR, United States. Hot Doughnuts (8)
Photo by Kevin K.

What they’re known for: fresh & hot, made to order mini-doughnuts

What Yelpers say: “I Love Pip’s! When I first came to Portland and my friend brought me here, I fell in love. I was planning another trip to Portland and this was the only donut place I was really excited to try. They had their seasonal flavor which was pear and lemon, which I loved. If I lived in Portland I would come here everyday. And plus I love their Chai as well. They close early so if you wanna get donuts, plan accordingly!” –Sunny S

  1. Luc Lac (Downtown)
Photo of Luc Lac - Portland, OR, United States. Counter to order
Photo by Kristen K.

What they’re known for: pho sling’n, fish sauce cookin’, cocktail pourin’

What Yelpers say: “Although the décor tried to steal the show, the food was truly the main character. I’m no expert, but I could absolutely picture these flavors in a different, mom-and-pop-shop setting. Overall, a healthy, scrumptious meal in a fun but dimly-lit setting. (You could also opt to dine outside.) The lines can be long, so get here early!!” –Jenny H

  1. Andina Restaurant (Pearl)
Photo of Andina Restaurant - Portland, OR, United States. Anticuchos Combinado with beef heart
Photo by Eve S.

What they’re known for: bringing the warmth of the Peruvian spirit into every aspect of the dining experience

What Yelpers say: “The ambiance and service alone are lovely and original, but surprisingly the food was just as good. We had a wide variety of appetizers and entrees and everything was as good as the next. …This was the best meal I had on our trip. It’s a must visit!” –Sophia N

11. Lechon (Old Town/Chinatown)

12. Lan Su Chinese Garden (Old Town/Chinatown)

13. Portland City Grill (Downtown)

14. Salt & Straw (Northwest)

15. Powell’s City of Books (Pearl)

16. The Grotto (Madison South)

17. Portland International Airport – PDX (Northeast)

18. Nong’s Khao Man Gai (Downtown)

19. Grassa (Downtown)

20. Oregon Zoo (Washington Park)

21. Cheryl’s On 12th (Downtown)

22. Le Pigeon (Buckman)

23. Portland Art Museum (Downtown)

24. Pittock Mansion (Washington Park)

25. Departure (Downtown)


Methodology: This is an all-time list of the most photographed businesses in the Portland area according to Yelp. To come up with this list, we identified businesses on Yelp, then ranked them based on how frequently users submit photos. This list looked at businesses in and around the Portland area. If a chain appeared on the list more than once, we only included the highest rated location. All businesses were marked open on Yelp as of May 2022. When available, all businesses on this list have a passing health score as of May 2022.

[gravityform id="4" title="false" ajax="true"]
<script type="text/javascript">var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,initializeOnLoaded:function(o){gform.domLoaded&&gform.scriptsLoaded?o():!gform.domLoaded&&gform.scriptsLoaded?window.addEventListener("DOMContentLoaded",o):document.addEventListener("gform_main_scripts_loaded",o)},hooks:{action:{},filter:{}},addAction:function(o,n,r,t){gform.addHook("action",o,n,r,t)},addFilter:function(o,n,r,t){gform.addHook("filter",o,n,r,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,n){gform.removeHook("action",o,n)},removeFilter:function(o,n,r){gform.removeHook("filter",o,n,r)},addHook:function(o,n,r,t,i){null==gform.hooks[o][n]&&(gform.hooks[o][n]=[]);var e=gform.hooks[o][n];null==i&&(i=n+"_"+e.length),gform.hooks[o][n].push({tag:i,callable:r,priority:t=null==t?10:t})},doHook:function(n,o,r){var t;if(r=Array.prototype.slice.call(r,1),null!=gform.hooks[n][o]&&((o=gform.hooks[n][o]).sort(function(o,n){return o.priority-n.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==n?t.apply(null,r):r[0]=t.apply(null,r)})),"filter"==n)return r[0]},removeHook:function(o,n,t,i){var r;null!=gform.hooks[o][n]&&(r=(r=gform.hooks[o][n]).filter(function(o,n,r){return!!(null!=i&&i!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][n]=r)}});</script> <div class='gf_browser_unknown gform_wrapper gform_legacy_markup_wrapper' id='gform_wrapper_4' ><div id='gf_4' class='gform_anchor' tabindex='-1'></div> <div class='gform_heading'> <span class='gform_description'></span> </div><form data-form-name='Newsletter Signup Popup' method='post' enctype='multipart/form-data' target='gform_ajax_frame_4' id='gform_4' action='/community/top-25-most-photographed-spots-in-portland-oregon/#gf_4' novalidate> <div class='gform_body gform-body'><ul id='gform_fields_4' class='gform_fields top_label form_sublabel_below description_below'><li id="field_4_1" class="gfield field_sublabel_below field_description_below hidden_label gfield_visibility_visible gf-email" data-field-class="gf-email" data-js-reload="field_4_1"><label class='gfield_label screen-reader-text' for='input_4_1' >youremail@address.com</label><div class='ginput_container ginput_container_email'> <input name='input_1' id='input_4_1' type='email' value='' class='large' placeholder='youremail@address.com' aria-invalid="false" /> </div></li><li id="field_4_2" class="gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_4_2"><label class='gfield_label' for='input_4_2' >Comments</label><div class='ginput_container'><input name='input_2' id='input_4_2' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_4_2'>This field is for validation purposes and should be left unchanged.</div></li></ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_4' class='gform_button button' value='Submit' onclick='if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} jQuery("#gform_4").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=4&amp;title=&amp;description=1&amp;tabindex=0' /> <input type='hidden' class='gform_hidden' name='is_submit_4' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='4' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_4' value='WyJbXSIsImE0YjFiMmUxY2IxMWVhYTljM2FhNzdkODk4NDUzZmY0Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_4' id='gform_target_page_number_4' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_4' id='gform_source_page_number_4' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_4' id='gform_ajax_frame_4' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> <script> gform.initializeOnLoaded( function() {gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery('#gform_ajax_frame_4').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_4');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_4').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_4').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_4').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_4').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_4').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_4').val();gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery(document).trigger('gform_page_loaded', [4, current_page]);window['gf_submitting_4'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_4').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_4').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [4]);window['gf_submitting_4'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_4').text());}, 50);}else{jQuery('#gform_4').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [4, current_page]);} );} ); </script>
[gravityform id="4" title="false" ajax="true"]
<div class='gf_browser_unknown gform_wrapper gform_legacy_markup_wrapper' id='gform_wrapper_4' ><div id='gf_4' class='gform_anchor' tabindex='-1'></div> <div class='gform_heading'> <span class='gform_description'></span> </div><form data-form-name='Newsletter Signup Popup' method='post' enctype='multipart/form-data' target='gform_ajax_frame_4' id='gform_4' action='/community/top-25-most-photographed-spots-in-portland-oregon/#gf_4' novalidate> <div class='gform_body gform-body'><ul id='gform_fields_4' class='gform_fields top_label form_sublabel_below description_below'><li id="field_4_1" class="gfield field_sublabel_below field_description_below hidden_label gfield_visibility_visible gf-email" data-field-class="gf-email" data-js-reload="field_4_1"><label class='gfield_label screen-reader-text' for='input_4_1' >youremail@address.com</label><div class='ginput_container ginput_container_email'> <input name='input_1' id='input_4_1' type='email' value='' class='large' placeholder='youremail@address.com' aria-invalid="false" /> </div></li><li id="field_4_2" class="gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_4_2"><label class='gfield_label' for='input_4_2' >Phone</label><div class='ginput_container'><input name='input_2' id='input_4_2' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_4_2'>This field is for validation purposes and should be left unchanged.</div></li></ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_4' class='gform_button button' value='Submit' onclick='if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} jQuery("#gform_4").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=4&amp;title=&amp;description=1&amp;tabindex=0' /> <input type='hidden' class='gform_hidden' name='is_submit_4' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='4' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_4' value='WyJbXSIsImE0YjFiMmUxY2IxMWVhYTljM2FhNzdkODk4NDUzZmY0Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_4' id='gform_target_page_number_4' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_4' id='gform_source_page_number_4' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_4' id='gform_ajax_frame_4' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> <script> gform.initializeOnLoaded( function() {gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery('#gform_ajax_frame_4').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_4');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_4').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_4').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_4').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_4').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_4').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_4').val();gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery(document).trigger('gform_page_loaded', [4, current_page]);window['gf_submitting_4'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_4').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_4').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [4]);window['gf_submitting_4'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_4').text());}, 50);}else{jQuery('#gform_4').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [4, current_page]);} );} ); </script>