Родился 25 ноября 1955 года в Минске, выходец из рабочей семьи. Белорус. В 1972 году закончил минскую специализированную (английский язык) среднюю школу № 87, после чего там же 2 года работал лаборантом кабинета физики. Одновременно учился на вечернем отделении математического факультета Белорусского государственного университета (БГУ). Служил на Балтийском флоте в морской пехоте (1974—1976). После демобилизации работал в кузнечном цеху Минского тракторного завода.
В 1976—1983 годах — студент механико-математического факультета БГУ. Закончил университет с красным дипломом. Активно участвовал в студенческом движении, пять раз выезжал командиром строительных отрядов. В 1983-1986 годах — секретарь комитета комсомола БГУ.
В 1986—1988 годах работал в БГУ преподавателем, старшим преподавателем, доцентом, деканом факультета. Активно занимался научной, педагогической и общественной деятельностью. Защитил кандидатскую диссертацию по проблемам аналитической теории дифференциальных уравнений.
С 1988 по 1996 год работал в Министерстве образования Республики Беларусь: вначале — начальником отдела аналитической работы и перспективного развития, начальником ведущего управления перспективного развития и безотрывного образования, потом — заместителем министра, первым заместителем министра. Внёс существенный вклад в становление системы образования независимого белорусского государства, был инициатором её реформирования и перевода на инновационный путь развития. Один из авторов закона «Об образовании» Республики Беларусь. Одновременно не прерывал научной работы, защитил докторскую диссертацию по новым образовательным технологиям.
В 1996 году был назначен ректором Белорусского государственного университета. В 2000 году избран на эту же должность абсолютным большинством Объединённого совета БГУ.
С 1998 по 2001 год — член правительства Республики Беларусь, министр. Был председателем Совета ректоров ВУЗов Белоруссии, членом Президиума Национальной Академии наук Беларуси.
Вдовец, имеет двоих дочерей (Ольга и Юлия). 23 февраля 2008 года на 49-м году жизни жена Ирина скончалась от тяжелой продолжительной болезни.
Увлекается теннисом, волейболом и шахматами.
Является автором более 100 научных работ. Ранее исполнял обязанности председателя Совета Ректоров ВУЗов Белоруссии, был членом Президиума НАН Белоруссии.
10 апреля 2005 года избран на объединительном съезде председателем Белорусской социал-демократической партии (Громада). В 2005 году стал учредителем и координатором Гражданской инициативы по созданию Общенационального движения «Воля народа», организационные структуры которого планировалось создать в городах и районных центрах Белоруссии, однако инициатива не получила продолжения.
В декабре 2005 Козулин был зарегистрирован кандидатом в президенты Белоруссии. На выборах по официальным данным набрал 2,3 % голосов, по данным «независимых» социологически опросов — в несколько раз больше. 25 марта 2006 года был арестован и затем осуждён на 5,5 лет лишения свободы «за злостное хулиганство и организацию массовых беспорядков». С 20 октября 2006 проводит голодовку протеста, требуя рассмотрения ситуации в Белоруссии в Совете Безопасности ООН. По словам его родственников, за восемь месяцев заключения, во время голодовки Александр Козулин похудел на 40 кг
13 декабря 2006 года представитель США Уильям Бренсик поднял вопрос о ситуации с правами человека в Белоруссии во время закрытого заседания в СБ ООН. По мнению заместителя председателя «Грамады» Анатолия Левковича, эта инициатива продемонстрировала признание Козулина как оппозиционного лидера. В тот же день сенат США поддержал законопроект, в котором призвал президента США ввести дополнительные санкции против Белоруссии.
В декабре 2006 года правозащитная организация Международная Амнистия признала Александра Козулина узником совести.
В августе 2008 года, вместе с Андреем Кимом и Сергеем Парсюкевичем помилован специальным указом президента Белоруссии Александра Лукашенко.
Другой кандидат от оппозиции на президентских выборах 2006 года Александр Милинкевич сказал в интервью радио «Эхо Москвы» о Козулине и его походе на приёмник-распределитель:
3 августа 2008 года был переизбран лидер партии БСДП (Громада). Вместо Александра Козулина лидером партии был избран бывший заместитель Анатолий Левкович. 21 декабря 2008 года Александр Козулин вышел из партии.