Посёлок находится у побережья Чёрного моря, в устье одноимённой речки Лоо. Расположен в 43 км к юго-востоку от районного центра — Лазаревское, в 26 км к северо-западу от Центрального Сочи и в 270 км к югу от города Краснодар (по дороге). Через посёлок проходят федеральная автотрасса А-147 Джубга — Адлер и железнодорожная ветка Северо-Кавказской железной дороги. В посёлке действует железнодорожная платформа Лоо. Полоса галечного пляжа тянется на 1,5 км в длину и около 40 метров в ширину. Граничит с землями населённых пунктов: Нижняя Хобза на северо-западе, Горное Лоо на северо-востоке и Кучук-Дере на юго-востоке. Лоо расположен в узкой приморской долине и с трёх сторон окружён горами и хребтами. Рельеф на территории посёлка преимущественно холмистый. Средние высоты составляют около 30 метров над уровнем моря. Абсолютная высота в окрестностях посёлка достигают 308 метров над уровнем моря. Гидрографическая сеть представлена в основном рекой Лоо. Климат влажный субтропический. Среднегодовая температура воздуха составляет около +14°С, со средними температурами июля около +24,5°С, и средними температурами января около +6,5°С. Среднегодовое количество осадков составляет около 1500 мм. Основная часть осадков выпадает в зимний период.