예성강의 길이는 187.4㎞, 유역 면적은 3,916.3㎢로서, 북한에서 15번째로 큰 강이다. 황해북도 수안군 언진산(彦眞山, 1,120m)에서 시작되는 언진천 및 강원도 이천군의 장재덕산(長在德山, 752m)에서 시작되는 지석천(支石川)을 합류하여 한강 하구로 흘러든다.
예성강은 고려에서 중국의 송나라와 교섭할 때 이곳에서 모든 배를 띄워 예절 있게 맞아들이고 다시 바래다 주었던 강이라 예성이라는 이름을 가지게 되었다. 고려 시대 송나라 상인들의 왕래가 많았을 때의 사실을 노래한 「예성강곡(禮成江曲)」도 있었다.
상류지역은 현무암대지이고 중류지역(평산∼금천 일대)은 탄산염암석이 화학적풍화작용을 받아 형성된 두꺼운 점토풍화각이 침식되어 이뤄진 골짜기가 있고 여기에 충적지가 있다. 상류에서 수안·신계·평산 분지의 연안 농경지를 관개한다. 강 하류 유역에는 연백평야가 펼쳐진다.
하계는 나뭇가지 모양이며, 하천망밀도가 비교적 높고 하천망이 발달된 편이다. 예성강에는 약 88개의 하천이 흘러든다. 유역의 연강수량은 1,352.7㎜ 정도로 유역평야의 관개용수로서 매우 중요한 구실을 한다. 4계절에 걸쳐 수량이 풍부하고 하구에서 100리 거리인 한포(汗浦)까지 선박의 항행이 자유로워 수운이 발달하였다.
본래 상류는 곡산천이었으나 제4기 하세에 현무암이 분출되어 용암대지가 형성되고 물길이 막히면서 대동강의 지류인 남강으로 흘러들게 되었다.
역사적으로 예성강 유역은 고대 낙랑군에 속하였고 뒤에는 대방군에 예속되었다. 백제에 병합되었다가 광개토왕 당시에 고구려의 영토가 되었다. 고구려의 멸망 뒤 당나라의 영토가 된 적도 있으나 곧 신라의 영토가 되었다. 예성강은 안북하(安北河) 또는 북하(北河)라고도 불렸고 고려 초에 왕건이 송악(松岳)을 본거지로 해상에서 후백제의 견훤과 싸울 때 이곳이 수군의 근거지가 되었다. 예성강의 수운은 벽란도(碧瀾渡)가 고려 송도의 배후 관문 구실을 담당하여 번영을 누렸다.
연안에는 여러 곳에 포구가 있었고 그 중 연백군 유곡면의 금곡포(金谷浦)는 유명한 포구였다. 『신증동국여지승람』에 의하면, “부근에 금곡연이 있고, 또한 금곡포창이 있어 연안·배천은 물론 해주·신천·풍천·장연·문화 등 여러 고을의 전세 양곡을 이곳에서 수납하여 서울로 조운하였다.”고 한다.
점차 수운이 약해지고 경의선 철도가 예성강 수로변을 따라 지나가게 되면서 수운은 더욱 보잘 것 없어졌다. 예성강은 개풍군과 연백군의 경계를 이루며 황해로 흘러든다. 하구 가까이는 조류의 역류가 심하며, 또한 휴전선이 지나고 있다.
황해북도 곡산군·수안군·신계군·평산군·토산군·금천군·인산군(린산군), 황해남도 봉천군·배천군·개성시 개풍군 지역을 흐른다. 유역의 주요 도시로는 금천·한포·평산 등을 들 수 있다.
금천은 경의선이 경기도를 벗어나 황해도로 접어들면서 예성강의 한 지류인 오조천(吾助川)과 합치는 지점에 위치한다. 이곳은 평산군·금천군일대의 농산물 집산지의 기능을 하며, 특히 금천군의 금천대두(金川大豆)는 예로부터 유명하다. 인삼의 고장인 개성과 인접한 관계로 이 일대는 인삼의 재배지로도 유명하다.
금천 동북쪽에 위치한 예성강 지류의 하나인 구연천(九淵川)의 상류 분지에 위치한 토산읍은 교통의 요지로서 금천·신계, 경기도의 연천, 강원도의 이천으로 연결되는 주요 시장이다.
한포는 금천 북쪽 예성강변에 자리잡고 있으며 예성강 수운의 소항점(溯航點: 물길을 거슬러 항해하는 지점)으로 부근 일대의 농산물 수송에 매우 중요한 구실을 하였다. 남천 유역의 평산읍은 행정·산업·교통의 중심지로 그 지방으로 통하는 물자의 집산지이며 동부산지로의 문호가 된다.
예성강 유역의 교통은 경의선 외에도 개풍군 개풍읍에서 시작하여 해주로 이어지는 토해선이 있고 1번 국도가 경의선과 나란히 달린다. 이들을 가로지르는 국도가 평산에서 만나고 금천의 원명리에서는 한 갈래의 국도가 갈라져 토산읍을 거쳐서 동부 산지로 접어든다. 이 지역은 농산물 외에도 금·은 등을 비롯하여 형석·대리석 등과 천연슬레이트를 비롯한 광산물의 산출이 많다.