Река Западна Двина изтича от югозападния ъгъл на езерото Охват (на 221 m н.в.) при село Бобровец, Андреаполски район на Тверска област, във Валдайското възвишение и се насочва на юг-югозапад. До град Андреапол ширината на реката е 15 – 20 m, бреговете ѝ са гористи и умерено стръмни, а коритото ѝ е каменисто, с бързеи и малки прагове. На участъка до град Западна Двина ширината ѝ се увеличава до 50 m, а след него – до 100 m. След устието на река Велеса (ляв приток) Западна Двина завива на запад, а след устието на Торопа (десен приток) – на юг и в протежение от около 45 km служи за граница между Тверска и Псковска област. Навлиза в Смоленска област, завива на югозапад, минава през град Велиж, от където става плавателна и след около 30 km навлиза на територията на Беларус. В този така описан участък реката тече в трапецовидна долина с ширина до 1 km, с високи брегове и слабо изразена двустранна заливна тераса. Течението ѝ е с малко завои, на места с бързеи и прагове.
На територията на Беларус преди град Витебск реката преминава през ниското Витебско възвишение, изградено от девонски доломити, и образува множество прагове и бързеи в протежение от 12 km. След Витебск Западна Двина продължава в западна посока, а след посьолок Бешенковичи – в северозападна, преодолява Городокското възвишение и навлиза в Полоцката низина. Тук долината ѝ значително се разширява (до 3 – 4 km), а ширината на водното течение достига до 200 m. В района на град Верхнедвинск реката проломява Летгалското възвишение, навлиза в Латвия и след град Даугавпилс завива на северозапад, като се разлива широко по Източнолатвийската низина. Тук долината ѝ достига вече до 5 – 6 km и е с много полегати склонове, а течението се забавя. По време на пролетното пълноводие в този участък по течението на реката често се образуват натрупвания от ледени блокове и водите ѝ наводняват обширни пространства.
Между градовете Йекабпилс и Плявиняс река Западна Двина преодолява последното си препятствие Видземското възвишение, като тече в тясна долина, със стръмни, на места отвесни брегове, изградени от сив доломит. След изграждането на Плявиняското водохранилище нивото на реката се покачва с 40 m и голям участък от древната ѝ проломна долина е потопена от водите на водохранилището. При градовете Кегумс и Саласпилс са изградени преградните стени на още две водохранилища, а след изтичането си от последното реката навлиза в Среднолатвийската низина. Преминава през центъра на столицата Рига и в северната част на града се влива от юг в Рижкия залив на Балтийско море. В този последен участък ширината на реката достига до 700 m, в района на квартал Милгравис – до 1,5 km, а дълбочината ѝ – 8 – 9 m.
Водосборен басейн
Водосборният басейн на река Западна Двина обхваща площ от 87 900 km2 и се простира на територията на 5 държави:
Река Западна Двина получава множество притоци, от които 13 са с дължина над 100 km. По-долу са изброени тези 13 реки, като са показани техните дължини, площта на водосборните им басейни, дали са леви (←) или десни (→) притоци и къде се вливат:
→ Велеса 114 km, 1420 km2, югоизточно от село Морозово, Тверска област, Русия;
← Торопа 174 km, 1950 km2, при село Шиково, Тверска област, Русия;
→ Межа 259 km, 9080 km2, при село Дорожино, Тверска област, Русия;
Подхранването на реката е смесено, като преобладава снежното, а доста голям процент се пада и на подземното (грунтово) подхранване. Пролетното пълноводие продължава от края на март до началото на юни, а през лятното и есенното маловодие много често се наблюдават големи водни количества за кратко време, причинени от поройни дъждове. Вторичното зимно маловодие продължава от декември до средата на март, но през отделни години се наблюдават и силни наводнения, причинени от ранното топене на ледовете. По принцип замръзването на реката продължава от декември до март. Средният многогодишен отток в устието на реката е 678 m3/s. Средна плътност на речната система във водосборния ѝ басейн е 0,45 km/km2, а езерата заемат площ около 3% от цялата територия на басейна ѝ.
Селища
По течението на реката са разположени стотици селища, в т.ч. 22 града:
В миналото реката е била плавателна на близо 680 km от устието си, до град Велиж, Смоленска област, но с построяването на Плявиняското, Рижкото (1972 г.) и Кегумското водохранилища (1939 г.) в Латвия корабоплаването е нарушено и сега се извършва на отделни участъци, тъй като в преградните стени на тези водохранилища не са изградени плавателни шлюзове. Изграждат се преградните стени на Полоцкото и Витебското водохранилища в Беларус, а предстои изграждането и на Верхнедвинското и Бешенковичкото водохранилища в Беларус. В Латвия е преустановено строителството на Даугавпилското водохранилище, а е проектирано и Екабпилското. Общият неизползваем потенциал на реката превишава 1 млрд. кВтч годишно.
Между реките Улла (ляв приток на Западна Двина) и Березина (десен приток на Днепър) е изграден т.нар. Березински плавателен канал, който не функционира.