HTML의 기능 중 하나로, 한 화면에 여러 개 이상의 페이지를 함께 표시해 주는 기능. 먼 옛날에, 그러니까 XmlHttpRequest가 인터넷익스플로러만의 전유물이던 시절에 매우 심각하게 남용되었으나, 현재는 많이 사라진 추세이다.
HTML 프레임은 그 구현 방법에 따라 세 종류로 나눌 수 있다.
frameset
및 frame
엘리먼트 (HTML 3.2 이후 지원)iframe
엘리먼트 (HTML4 이후 지원)이 중 맨 마지막 XFrames는 표준안이 묻혀버려서 거의 사용되지 않으며, 나머지 두 개는 HTML 표준에 계속 남아 있으나 이 중 좀 더 "전통적"이라 할 수 있는 가로·세로 나누기는 HTML5에서 폐기 예고가 된 상태이다(물론 하위 호환성때문에 한참 남아 있을 것 같지만).
가로·세로 나누기에서 프레임셋 안에 들어 있는 각 프레임은 서로 별도의 페이지를 참조할 수 있으며, 기본적으로는 다른 프레임에 영향을 주지 않고 다른 페이지를 불러 올 수 있다1). 이 기능은 현재에도 유효해서, 2ch 같이 트래픽이 엄청나게 크고, 따라서 노프레임으로 전환할 경우 트래픽이 급격히 늘어날 가능성이 큰 일부 웹사이트에서 현재까지 잘 쓰이고 있다.
iframe의 경우 프레임을 포함한 페이지와 프레임 안에서 열린 페이지는 동등한 관계가 아니며, 따라서 가로·세로로 나눌 때 얻을 수 있는 트래픽 감소는 기대할 수 없다. 다만 두 페이지가 서로 다른 도메인에 있으면서, 동일도메인정책 때문에 XmlHttpRequest를 쓸 수 없는 상황일 경우 유용할 수 있다. 여기에는 웹위젯 같은 것들이 포함된다.
안타깝게도 프레임의 원래 사용 목적을 넘어선, 그러니까 보통 HTML로 깔끔하게 만들 수 있는 것을 프레임을 써서 엉망으로 만들어 놓는 남용 사례가 한동안 있어 왔는데, 여기에는 다음이 포함된다:
설마 이런 사이트가 아직도 남아 있는가? 생각한다면 오산. 아직도 꽤 남아 있다(예를 들어서 코레일 웹사이트). 제발 이러지 좀 말자.