Часть первая
Однажды ранним утром Аксинья, жена столяра Тараса Зазули, нашла у своего дома умирающую нищенку с крошечным ребёнком. Поскольку своих детей у Зазулей не было, они усыновили мальчика и нарекли его Александром. Жила семья столяра в Голодаевке, беднейшем пригороде Житомира. Там и вырос Санька, прозванный Рыжиком из-за медно-красного цвета волос.
Прошло шесть лет. Рыжик стал грозой всей Голодаевки. Он обирал окрестные сады и верховодил шайкой голодаевских сорванцов. Только зимой город отдыхал от рыжего чертёнка: у Саньки не было сапог, и в холода он не выходил на улицу. Аксинья, успевшая родить двух девочек, очень любила приёмыша. Тарас Зазуля воспитывал Рыжика как мог: регулярно охаживал его аршином и предрекал каторжное будущее. Вскоре у Саньки появился друг — огромная собака, которую мальчик нашёл на свалке и вылечил. Обнаружив собаку, Тарас хотел прогнать её, но мальчик закричал: «Это мой пёс!», а собака оскалила внушительные клыки, которые заставили Зазулю ретироваться. Собаку оставили, назвали Мойпёс, и Голодаевка совсем лишилась покоя. Теперь Рыжик объезжал свои «владения» верхом на верном Мойпёсе.
Прошло ещё два года. Одной ненастной осенней ночью в дом Зазулей постучала Дуня, племянница безрукого отставного ефрейтора по кличке Андрей-воин. У Дуни умерла мать, дядя послал девочку к столяру, чтобы тот сделал гроб. Андрей-воин пропивал свою пенсию до копейки и заплатить Тарасу не мог, но добрый Зазуля не отказал сироте. Санька проникся сочувствием к Дуне и решил всегда защищать девочку.
Когда кончилась зима, Рыжик пошёл навестить «подопечную». Он застал Андрея-воина пьяным. Мягкий и добрый в трезвом виде, пьяный ефрейтор зверел. За зиму Дуня много натерпелась от дядьки. В тот день пьяница муштровал племянницу, как солдата-новобранца. Чтобы защитить Дуню, Санька обманул инвалида — сказал, что его ждут в местном кабаке. Обнаружив обман, ефрейтор рассвирепел, но Мойпёс задержал его, и дети успели выскочить в окно. Дуня поселилась у Зазулей.
Пронеслась весна. Наступила ярмарка. К ней Тарас выстрогал Рыжику целый арсенал — ружья, сабли. Санька рассчитывал продать их и купить себе сапоги, чтобы зимой не сидеть дома. Рыжик простоял на ярмарке весь день, но деревянные ружья никто не покупал. Уже вечером, когда все начали расходиться, к Рыжику подошла женщина в трауре с двумя хорошо одетыми мальчиками. Так Санька познакомился с сыновьями покойного директора гимназии.
Их дом был самым большим и красивым в городе. Санька стал там желанным гостем и не возвращался оттуда без подарков. Вскоре Рыжик познакомил панычей со своими сёстрами и Дуней. Тихая и хорошенькая девочка понравилась вдове. Узнав, что Дуня сирота, она решила оставить её у себя. Рыжик же, храбрый спаситель Дуни, пользовался у новых знакомых большим уважением.
Прошло лето. Однажды в августе Рыжик вернулся домой очень поздно. Дверь была не заперта. Мальчик тихо вошёл и услышал разговор родителей, из которого узнал, что он не родной сын Зазулей и что его хотят отдать в ученики к крёстному Ивану-сапожнику. Это стало для мальчика настоящим горем. Выяснив, чей он, мальчик проплакал несколько дней, а потом зажил по-прежнему. Всё шло хорошо, пока Санька не вернулся домой после большой драки, с синяками и в изодранной рубахе. Тут у Тараса лопнуло терпение, и он выполнил свою угрозу — отдал Рыжика в ученики.
Жена Ивана-сапожника Катерина сразу приспособила Рыжика к домашнему хозяйству. Санька не столько учился сапоги шить, сколько помогал Катерине. В конце концов тётка сделала его свинопасом. Вольная жизнь нравилась Рыжику, пока Дуня не рассказала, что панычи смеются над ним. Разозлившись, Санька разогнал свиней и подался в бега.
Сопровождаемый Мойпёсом, Рыжик миновал лесок и вышел к мельнице. Здесь Санька остановился — никогда он не заходил так далеко. Мальчик испугался и заплакал, и тут с ним заговорил щуплый невысокий человек. Он оказался бродячим фокусником. Рыжик переночевал с ним в лесу, а утром упросил взять с собой. Фокусник был алкоголиком и не хотел отвечать за десятилетнего мальчика, но, узнав, что Санька — сирота-приёмыш, согласился. Звали бродягу Иван Раздольев, но в балаганах ему дали прозвище Полфунта за маленький рост. Мойпёса он не разрешил взять с собой.
Через неделю путники были в Киеве. За это время Полфунта много рассказал Рыжику об окружающем мире, ведь до тех пор мальчик не знал даже, как называется родной город. В Киеве спутники сразу отправились на железнодорожный вокзал, чтобы зайцами уехать в Одессу. Пробравшись в вагон, дав взятку кондуктору и спрятав Рыжика под лавку, Полфунта пошёл купить булку и опоздал на поезд. Рыжик уехал один.
Часть вторая
Спящего под лавкой Рыжика обнаружил контролёр и велел ссадить мальчика с поезда на ближайшем полустанке. Так Рыжик оказался на крохотной станции посреди степи. Началась гроза. Рыжик пробрался на станцию и прикорнул на длинной лавке у ног какого-то старика. Утром оказалось, что старик — крепкий, высокий человек с внимательными глазами, его старила только белая борода. Когда проснулся Рыжик, мужчина притворился слепым. Мальчик пожалел его и согласился проводить.
Новый знакомый, велевший называть себя дедушкой Архипом, был профессиональным нищим. Он привёл мальчика в город с большим монастырём, при котором были столовая и ночлежка для бездомных. Там Санька познакомился со своим ровесником Спирькой по кличке Вьюн, который объяснил Рыжику правила новой жизни. Очень часто нищие крали или уводили обманом детей, поскольку им давали больше милостыни. Сам Вьюн, человек бывалый, сменил десяток хозяев. Но Спирьке не нравилось побираться, он мечтал стать вором.
Рыжик прожил среди нищих около года. «Много он за это время перевидел, переиспытал и много горя, лишений и невзгод перенёс. Свои печали он делил со Спирькой Вьюном, которому жилось ничуть не лучше». Весной друзья сбежали. Добравшись до станции, они проникли в пустой товарный вагон и доехали до Одессы. «Громадный город, с его шумом, давкой и оживлением, поразил и ошеломил маленьких бродяг». Пройдя по нарядным набережным, они оказались в бедном районе, где зашли в трактир пообедать.
За соседним столом сидела компания детей, в которых Спирька распознал воришек. Вьюн решил к ним прибиться. Дети привели новых товарищей к своему хозяину Федьке Косоручке, бывшему вору с искалеченной рукой, который учил воровству беспризорников и скупал краденое.
Спирька с готовностью погрузился в воровскую жизнь, а Рыжику она была не по душе. Санька постоянно уговаривал Спирьку бежать, но тот не соглашался. Прошёл месяц. За это время Рыжик, пользуясь полной свободой, обошёл всю Одессу, успел полюбить море и отдалился от друга.
Однажды «фартовый» вор Лёнька Фомкач попросил Косоручку одолжить ему детей «для дела». Они должны были залезть через форточку в богатую квартиру и открыть окно. Попав в роскошный кабинет, полный красивых безделушек, Рыжик на миг поддался воровскому азарту, но тут обнаружилось, что на шайку организована засада. Когда всех воришек вывели во двор, Лёнька кинулся бежать, и в суматохе Рыжику удалось скрыться.
Санька добежал до городского сада и спрятался под летней эстрадой. Затаившись, мальчик начал вспоминать приёмных родителей, Дуню, и ему очень захотелось домой. И тут он услышал шорохи, вздох — под эстрадой был кто-то ещё. Испугавшись, Санька выскочил наружу. Вслед за ним из-под эстрады выбрался человек, в котором Рыжик узнал Полфунта. Рыжик рассказал Полфунту о своих похождениях. Фокусник же поведал, как искал Саньку в Одессе и как съездил в Житомир, надеясь, что мальчик вернулся домой. На обратной дороге в Одессу у Полфунта случился запой, поэтому он приехал сюда вчера без денег и вещей.
Фокусник предложил Саньке вернуться домой, и тот с радостью согласился. Полфунта наведался к богатой родне, жившей в Одессе. К Рыжику он пришёл с деньгами, покупками, но обиженный — родня не захотела его принять, считая пропащим. Когда-то Полфунта, человек из богатой купеческой семьи, учился в гимназии. Почувствовав тягу к актёрскому ремеслу, он бросил учёбу, а семья от него отвернулась. Хорошим актёром Полфунта не стал, поэтому подался в бродячие фокусники.
Чтобы накормить Рыжика, Полфунта зашёл в трактир, где напился до бесчувствия. Когда их выгнали из трактира, фокусник уже не стоял на ногах. По счастью, у Рыжика теперь были деньги, а подоспевший городовой помог нанять извозчика. В ночлежном доме, куда их отвёз извозчик, Полфунта напивался ещё несколько раз.
Утром фокусник проснулся «с головной болью и мучительными угрызениями совести». Он пообещал Саньке до самого Житомира ни капли в рот не брать и обещание сдержал. Всё оставшееся лето Полфунта с мальчиком шли к Житомиру, подрабатывая в бродячих цирках и балаганах.
В холодный осенний вечер Рыжик вернулся домой. Мальчику все были рады, особенно Мойпёс, который сильно скучал по хозяину. В Голодаевке по-прежнему царила нищета. Полфунта спас Зазулей от голода, отдав Аксинье часть заработанных денег. На следующий день Санька, проводив Полфунта, отправился к Дуне. Девочка, ставшая настоящей барышней, была рада Рыжику, а вот панычи встретили приятеля без интереса: они поступили в гимназию и были заняты только собой.
Вскоре Рыжик затосковал. Все его товарищи уже были в учениках, и Санька редко с ними встречался. Жизнь вошла в унылую колею, полную беспросветной нищеты. Чтобы не быть дармоедом, Рыжик сам попросился в учение к крёстному. Он очень старался, помогал тётке Катерине и мечтал о весне.
Прошла зима. Мальчику «донельзя опротивела Голодаевка, её обыватели и их нищенская жизнь», его снова тянуло в странствия. Однажды после Пасхи Рыжик увидел в придорожной канаве спящего человека — это был Полфунта. Он сказал мальчику, что идёт «за счастьем», и Санька пошёл с ним, даже не попрощавшись с Зазулями.
Часть третья
Новые приключения Рыжика начались в первом же селе, где они с фокусником решили переночевать. Село было бедное, поэтому путников, нуждающихся в ночлеге, принимали по очереди. Саньке и Полфунту выпало ночевать у кузнеца. Сам кузнец гулял в трактире. Он явился в полночь, пьяный и с желанием подраться. Спорить с огромным детиной Полфунту совсем не хотелось, и он решил напугать кузнеца. Фокусник намазал лицо фосфорными спичками, отчего оно начало светиться в темноте, скорчил страшную рожу и стал прыгать по хате. Кузнец решил, что перед ним настоящий чёрт, и от страха полез под стол. Когда друзья выскочили из хаты, кузнец погнался за ними, Рыжик бросился бежать и снова потерялся.
Оставшуюся часть ночи мальчик провёл в стогу, а утром обнаружил в своей «спальне» соседа. «Это был большой, неповоротливый человек лет за пятьдесят», звали его Антон Не-Кушай-Каши. Рыжик решил пойти с ним, надеясь рано или поздно найти Полфунта.
Антон привёл Рыжика в еврейское местечко. Религия запрещала евреям работать по субботам. В эти дни всю домашнюю работу в их домах выполнял нанятый человек. Антону предложили постоянное место, но Рыжику здесь не понравилось — уж слишком чужим всё было.
Переночевав в местечке, Рыжик пустился на поиски Полфунта.
Подойдя к развилке трёх дорог, Рыжик растерялся. До сих пор он не путешествовал один, всегда им кто-нибудь управлял. «Теперь же, оставшись с самим собою, Рыжик сразу понял, что ходить по земле без цели нельзя». Он сел на обочине в раздумье. Рядом с Санькой остановился «белокурый мальчик, с голубыми смеющимися глазами и добрым, красивым лицом». Рыжику сразу понравился этот явно опытный бродяга по имени Лёвушка Стрела. Он сбежал от отчима, который его мучил, заставляя учиться. Стреле было всё равно, куда идти, и он решил присоединиться к поискам Полфунта, о котором ему рассказал Рыжик. Санька вспомнил, что фокусник собирался в Санкт-Петербург. Туда новые друзья и направились.
Лёвушка путешествовал в основном на паровозах и знал, как спрятаться от кондуктора. Способ этот был рискованным: следовало повиснуть на железных перилах вдоль вагона, когда паровоз мчится на всех парах. Рыжик воспользовался им только два раза. На второй раз его поймал контролёр, сам перепугавшийся не на шутку при виде смелого зайца. После этого Рыжик отказался от поездов.
Случилось это, когда друзья успели объехать пол-России и добрались до Прибалтики. Дружба мальчиков крепла. Лёвушке были известны местные наречия, так как раньше он жил в Литве — его отчим был управляющим имения около Полангена. Добравшись до этих мест, Лёвушка стал очень осторожен. Он боялся, что его узнают и поймают.
Лёвушку тянуло к поездам, поэтому друзья подходили к каждой станции, надеясь раздобыть денег или еды. Однажды на станции Жосли друзья увидели, как с поезда ссаживают очередного зайца. Через некоторое время незадачливый безбилетник их догнал. Это оказался еврейский мальчишка Хаимка, которому тоже было всё равно, куда идти, и он присоединился к Рыжику и Лёвушке.
Вечером того же дня друзья подошли к корчме. Хозяин-еврей пустил мальчишек переночевать. Больше всего на свете Хаимка любил сыр. Проснувшись рано утром, он увидел огромные круглые сыры, сушившиеся на чердаке. Хаимка подбил ребят украсть три сыра. Но хозяин корчмы уже не спал и быстро обнаружил пропажу. Лёвушка и Рыжик сумели убежать, а вот любитель сыра попался.
Вскоре Санька лишился и последнего попутчика. В тот вечер друзья попросились на ночлег к единственным русским, живущим в литовской деревне. Только утром ребята обнаружили, что ночевали в доме местного жандарма. Рыжика жандарм отпустил, а Лёвушку вернул в семью за вознаграждение.
Рыжик «чувствовал себя одиноким, заброшенным и никому, никому не нужным». Саньке пришлось нелегко. Сначала его обокрал оборванец, напросившийся в попутчики, а потом мальчика покусали собаки, когда он собирался попросить хлеба на богатой мызе. Вокруг почти не было русских. Рыжика не понимали и встречали неприязненно. Несколько раз ему «угрожала голодная смерть». К августу он добрался до Балтийского моря. Здесь Рыжику наконец повезло — по всему берегу стояли пограничные заставы, где служили в основном украинцы. Они тоже скучали по родной речи и радостно принимали земляка.
На одной из застав Рыжик встретил жителя Голодаевки, служившего унтер-офицером. Земляк взял Рыжика с собой в Литву, а там посадил на судно до Риги. В Риге Санька устроился мальчиком на судно, идущее в Санкт-Петербург.
Санкт-Петербург оказался огромным и холодным. Петербуржцы подавали милостыню неохотно. Капитан судна обманул Рыжика, ничего не заплатив за работу, и Санька сильно голодал и мёрз. Наступила осень. Однажды Рыжик наткнулся на столовую, где нищих бесплатно кормили супом. В очереди он познакомился с тощим бродягой Герасимом. Он отвёл Саньку в частный ночлежный приют. Владел приютом родной дядька Герасима, который был так жаден, что даже с племянника брал деньги за ночлег.
Герасим собирался идти в Москву, и Санька решил пойти с ним. Ночью в ночлежку ворвались жандармы и устроили облаву на беспаспортных бродяг. Рыжик с Герасимом переждали облаву под нарами. После этого дядя дал Герасиму старый тулуп, 23 копейки и велел больше не появляться в городе.
Дорога до Москвы была трудной. Из столицы путники отправились в Нижний Новгород, где у Герасима был дом. В Нижний они пришли жарким летним днём. Герасим сразу пошёл домой, и Рыжик снова остался один. Настроение Саньки улучшилось, когда он увидел ярмарку.
Переходя от балагана к балагану, мальчик решил прибиться к одному из них, благо цирковой опыт у него был. Тут по ярмарке разнеслась весть: рухнули подмостки театра, и одного фокусника задавило. Протиснувшись сквозь толпу, Рыжик увидел тощего человечка, «исковерканного до невозможности», и узнал в нём Полфунта.
Пробиться в больничный барак к другу Рыжик сумел только на следующий день. Полфунта мучительно страдал. Собравшись с силами, он велел Саньке бросать бродячую жизнь и начинать трудиться, приносить пользу другим, ведь «бродяги не нужны миру». На следующее утро мальчику сказали, что Полфунта умер. «Рыжик прижался к стене, закрыл лицо руками и заплакал жалобным, тихим плачем».