/ 우리는 이렇게 합니다 / 라이브 필터·검색
UX 설계 · 탐색을 맡은 사람

항목이 많아지면, 사람은 ‘찾기’를 원합니다.

메뉴가 8개일 때는 눈으로 훑습니다. 30개가 되면 사용자는 스크롤을 멈추고 검색창을 찾습니다. 없으면 그냥 떠납니다. 그래서 이 글은 읽는 글이 아니라 직접 쳐보는 글입니다. 아래 입력창에 단어를 넣으면 진짜로 걸러집니다.

한 줄 직답

좋은 탐색은 화면을 채우는 게 아니라 사용자가 찾는 걸 빨리 꺼내 주는 것입니다. Findable은 항목이 7~10개를 넘으면 입력 즉시 거르는 필터·검색을 넣고, 빈 상태 문구·동의어 매칭·키보드 접근까지 같이 설계합니다.

요약

  • 항목이 7개를 넘으면 사람은 훑기를 멈추고 ‘찾기’를 원한다 — 그때 필터·검색을 넣는다.
  • 입력 즉시 거르는 실시간 필터는 ‘화면 안에서 거를 때’ 가장 빠르다(서버를 안 때림).
  • 검색 결과가 없을 때는 빈 화면이 아니라 한 문장의 안내를 보여준다.
  • 라벨에 안 보이는 동의어·약어·영문을 따로 넣어 ‘찾는 단어’와 ‘보이는 글자’를 분리한다.

예전에 자료실 페이지를 만들었는데, 문서가 처음엔 12개였습니다. 검색창이 없어도 괜찮았죠. 반년 뒤 문서가 60개가 됐는데 검색창은 그대로 없었습니다. ‘작년 보고서 어디 있냐’는 문의가 매주 들어왔습니다. 항목은 늘었는데 ‘찾는 방법’은 안 늘어난 겁니다. 그날 이후로 저는 목록을 만들 때 ‘이게 몇 개까지 늘어날까’를 먼저 묻습니다.

그래서, 직접 쳐보세요

설명보다 빠릅니다. 아래 입력창에 ‘GEO’, ‘폼’, ‘속도’ 같은 단어를 쳐보세요. 입력하는 동안 목록이 즉시 줄어듭니다. 그리고 일부러 ‘없는 단어’도 쳐보세요 — 빈 상태가 어떻게 처리되는지 보입니다.

Live · 라이브 필터·검색

입력하면 즉시 걸러집니다

'GEO', '폼', '속도' 같은 단어를 입력해 보세요.

GEO/AEO 최적화
SEO 검색 최적화
문의 폼 설계
속도·성능
모바일·반응형
접근성
카피·콘텐츠
보안

언제 필터·검색을 넣고, 언제 빼야 할까요?

저는 ‘항목 7개’를 기준선으로 씁니다. 사람이 한눈에 비교할 수 있는 개수가 대략 거기까지입니다. 7개 이하면 검색창은 오히려 손이 한 번 더 가게 만드는 방해물입니다. 그냥 다 보여주는 게 빠릅니다. 7개를 넘기면 훑기가 힘들어지고, 10~20개를 넘어가면 검색창이 없을 때 사람이 떠납니다. 그래서 ‘지금 몇 개’가 아니라 ‘앞으로 몇 개까지 늘어날까’를 보고 미리 넣습니다.

입력하면 바로 거르는 게 왜 좋은가요?

위 위젯은 한 글자 칠 때마다 목록을 다시 그립니다. 버튼을 누를 필요가 없죠. 이게 빠른 이유는 단순합니다 — 항목이 이미 화면에 있으니 서버에 다시 물어볼 필요가 없습니다. 화면 안에서 보이고/숨기고만 합니다. 반대로 결과가 수천 건이거나 매번 서버에 요청해야 하면, 한 글자마다 호출하면 서버가 비명을 지릅니다. 그때는 입력이 멈춘 뒤 잠깐 기다렸다 한 번만 보내는 ‘디바운스’를 씁니다. 기준은 항상 ‘서버를 때리느냐’입니다.

검색 결과가 없을 때, 화면을 비워두면 안 됩니다

위 위젯에서 ‘zzz’ 같은 없는 단어를 쳐보세요. 목록이 사라지고 ‘검색 결과가 없어요 — 다른 단어로 찾아보세요’가 뜹니다. 이 한 문장이 없으면 사용자는 사이트가 고장 났다고 생각하고 새로고침을 누릅니다. 빈 상태는 ‘에러’가 아니라 ‘안내해야 할 순간’입니다. 여유가 되면 여기에 인기 항목이나 ‘전체 보기’ 버튼을 같이 둬서, 막다른 길이 아니라 갈림길로 만듭니다.

라벨에 안 보이는 키워드를 따로 넣는 이유

위 위젯에서 ‘ai’나 ‘aeo’를 쳐보면 ‘GEO/AEO 최적화’ 항목이 나옵니다. 라벨에는 ‘ai’라는 글자가 없는데도요. 비밀은 각 항목의 data-k 속성에 화면에 안 보이는 동의어·약어·영문을 같이 넣어둔 겁니다. 사용자는 라벨에 적힌 그대로 검색하지 않습니다. ‘문의 폼 설계’를 ‘form’으로, ‘속도·성능’을 ‘코어웹바이탈’로 찾습니다. 보이는 글자와 찾는 글자를 분리해야 검색이 사람의 머릿속과 맞아떨어집니다.

필터·검색도 키보드와 스크린리더를 챙겨야 합니다

입력창은 Tab만으로 닿을 수 있어야 합니다(위 위젯도 Tab으로 가보세요). 그리고 결과 개수가 바뀌면 화면을 못 보는 사용자도 알 수 있게 알려줘야 합니다. 빈 상태 문구도 이미지가 아니라 ‘텍스트’로 둬야 낭독기가 읽습니다. 어렵게 들리지만, type="text" 입력에 또렷한 placeholder를 두고 결과 영역에 적절한 안내를 텍스트로 두는 것만으로 대부분 해결됩니다.

‘필터를 잘 만든다’는 건 결국 사용자의 시간을 아끼는 일입니다

화려한 애니메이션이 들어간 필터보다, 한 글자 쳤을 때 바로 줄어드는 목록 하나가 사람을 더 오래 머물게 합니다. 항목 개수를 미리 가늠하고, 빈 상태를 챙기고, 동의어를 심어두고, 키보드를 챙기는 것 — 화려하지 않지만 이게 탐색 UX의 전부입니다. 당신의 사이트, 사용자가 원하는 걸 몇 초 만에 찾고 있나요?

항목긴 목록만필터·검색
찾는 시간끝까지 스크롤한 글자 입력에 즉시
이탈못 찾고 떠남원하는 항목만 남아 머묾
빈 결과해당 없음(다 보임)안내 문구로 다음 행동 유도
만족‘어디 있지?’‘바로 나오네’

제가 ‘찾기’를 설계할 때 사용자가 단어를 쳐서 원하는 항목에 닿는 동선은 이렇게 흘러갑니다.

검색·필터 동선 — 단어에서 결과까지
긴 목록 인지검색창 발견한 글자 입력실시간 필터링결과 0개면 안내항목 선택

그리고 ‘찾기’가 끊기는 자리는 늘 정해져 있습니다. 어디서 막히고, 그걸 무엇으로 푸는지 단계별로 정리했습니다.

탐색 단계별 마찰과 해결
탐색 단계사용자가 막히는 지점해결
검색 진입검색창이 없거나 안 보여 스크롤만항목 30개 이상이면 상단에 검색창 노출
입력‘검색’ 버튼을 눌러야 결과가 바뀜한 글자 입력마다 즉시 필터링
오타·동의어다르게 부른 단어라 결과 0개동의어를 데이터에 심어 같이 매칭
빈 결과흰 화면만 남아 막다른 길‘없음’ 대신 다음 행동 안내 문구
키보드 사용마우스 없이는 결과 이동 불가방향키·엔터로 결과 탐색·선택 지원

화려한 효과보다, 이 길에서 멈칫하는 자리를 하나씩 없애는 게 탐색 UX의 전부입니다.

다른 담당자와의 연결

항목이 몇 개부터 필터·검색이 필요한가요?
대략 7개를 넘기면 사람은 눈으로 훑기를 멈추고 찾기를 원합니다. 10~20개를 넘어가면 검색창을 빼는 순간 이탈이 생깁니다. 반대로 항목이 5개 이하면 필터는 오히려 방해가 됩니다. 그냥 다 보여주는 게 빠릅니다.
실시간 필터와 검색 버튼 중 무엇이 낫나요?
항목이 이미 화면에 있고 페이지 안에서 거르는 거라면 입력 즉시 거르는 실시간 필터가 빠릅니다. 서버에 매번 요청을 보내야 하거나 결과가 수천 건이면 버튼이나 디바운스로 호출을 줄입니다. 기준은 ‘서버를 때리느냐’입니다.
검색 결과가 없을 때는 어떻게 하나요?
빈 화면을 그대로 두면 사용자는 사이트가 고장 났다고 생각합니다. ‘검색 결과가 없어요 — 다른 단어로 찾아보세요’ 같은 한 문장과, 가능하면 인기 항목이나 초기화 버튼을 같이 보여줍니다. 빈 상태는 디자인의 일부입니다.
왜 라벨에 보이지 않는 키워드를 따로 넣나요?
사용자는 라벨에 적힌 그대로 검색하지 않습니다. ‘GEO/AEO 최적화’ 항목을 ‘AI 인용’이나 ‘aeo’로 찾는 사람을 위해, 화면에 안 보이는 동의어·약어·영문을 data 속성에 같이 넣어 매칭합니다. 보이는 글자와 찾는 글자를 분리하는 겁니다.
필터·검색은 접근성에 문제가 없나요?
키보드만으로 입력창에 닿을 수 있어야 하고, 결과 개수가 바뀌면 화면 낭독기가 알 수 있게 알려야 합니다. 빈 상태 문구도 스크린리더가 읽도록 텍스트로 둡니다. 입력은 type='text'에 또렷한 placeholder로 두면 대부분 해결됩니다.

이런 디테일로 사이트를 만듭니다

항목 하나, 빈 화면 하나까지 챙기는 팀이 당신의 홈페이지를 만들면 어떨까요. 무료 진단으로 시작하세요.

무료 진단 받기

이 글의 필터·검색 위젯은 이 페이지에서 실제로 동작하는 코드입니다(입력 즉시 거르기·빈 상태·동의어 매칭 전부 실동작, 외부 라이브러리 0). ‘항목 7개’ 같은 기준은 일반적인 설계 경험칙이며 특정 성과를 보장하지 않습니다. 날조된 사례·수치는 사용하지 않았습니다.