John ngồi bên giường người cha ốm nặng. Đêm ấy, cha chàng nói: “Con là đứa con ngoan, Chúa sẽ giúp con trên đường đời,” rồi nhắm mắt ra đi. John khóc tới khi thiếp ngủ, và mơ thấy một nàng công chúa đội vương miện vàng đưa tay cho chàng, còn cha chàng nói: “Xem kìa, con đã cưới được một cô dâu như thế.” Tuần sau người cha được chôn cất. John đứng nghe đất rơi lên nắp quan tài, nhìn tới khi khuất hẳn. Rồi chàng gói hết của cải, năm mươi đồng bạc và mấy đồng xu lẻ, giắt vào thắt lưng, chào mộ cha, lên đường đi khắp thế gian.
Một đêm mưa bão, chàng vào trú trong một nhà thờ nhỏ. Giữa nhà thờ có một chiếc quan tài để ngỏ, người chết nằm đó chờ chôn. Chàng chẳng sợ, vì người chết không làm hại ai, chỉ người sống mới làm điều ác. Nửa đêm, hai kẻ độc ác tới, định lôi người chết ra vứt ngoài cửa, vì khi sống ông còn nợ chúng tiền chưa trả. John nói: “Tôi chỉ có năm mươi đồng bạc, là tất cả gia tài. Tôi đưa hết cho các anh, nếu các anh hứa để người chết yên nghỉ.” Chúng cầm tiền, cười cợt bỏ đi. John đặt người chết nằm ngay ngắn lại, chắp tay ông lên ngực, từ biệt, rồi vui vẻ đi vào rừng.
Sáng hôm sau, chàng nghe có tiếng gọi phía sau. Một người lạ, cao lớn, dễ mến, hỏi chàng đi đâu. John đáp: “Đi khắp thế gian.” Người lạ nói: “Tôi cũng thế. Ta đi cùng nhau nhé.” Và thế là họ thành bạn đồng hành, chẳng mấy chốc đã quý nhau. Dọc đường họ gặp một bà lão lưng còng, vác bó củi, ba cây roi dương xỉ giắt ở tạp dề. Bà trượt chân, ngã gãy chân, kêu la thảm thiết. Người bạn mở túi lấy hộp thuốc mỡ, bảo xoa vào sẽ lành ngay, nhưng đổi lại phải cho anh ba cây roi. Bà lão chê đắt, gật gù khó chịu, nhưng nằm đó đau quá nên đành đưa. Xoa thuốc xong, bà đứng dậy đi còn nhanh hơn trước.
Tới một thị trấn, họ xem gánh múa rối. Con chó bun của một ông hàng thịt ngồi hàng đầu nhảy lên sân khấu, cắn gãy con rối hoàng hậu. Ông chủ gánh buồn lắm. Người bạn lấy thuốc mỡ xoa vào, con rối lành lặn, lại tự cử động được không cần dây. Ông chủ xin xoa cho các con rối khác, người bạn chỉ xin đổi lấy thanh gươm ông đeo bên mình. Hôm sau, một con thiên nga trắng bay trên đầu họ, hát hay chưa từng có. Tiếng hát yếu dần, rồi nó rơi xuống chết dưới chân họ. Người bạn nói: “Đôi cánh đẹp thế này, đáng giá lắm. Thấy chưa, có gươm cũng có lúc dùng tới.” Rồi anh chặt lấy đôi cánh mang theo.
Họ tới một kinh thành lớn. Chủ quán trọ kể: nhà vua là người tốt, nhưng con gái vua là một mụ phù thuỷ độc ác. Ai muốn cưới nàng phải đoán ba điều nàng nghĩ trong đầu. Đoán đúng thì cưới nàng và lên làm vua, đoán sai thì bị treo cổ hay chém đầu. Ông vua già đau lòng lắm, mỗi năm một ngày ông cùng quân lính quỳ cầu cho nàng hoá hiền, nhưng nàng chẳng đổi. John nói: “Nàng công chúa ấy đáng bị đánh đòn một trận.” Đúng lúc ấy nàng cưỡi ngựa đi qua, vương miện lấp lánh như sao, áo choàng dệt bằng cánh bướm, đẹp tới mức ai nấy quên cả sự độc ác của nàng mà reo hò, còn John thì đứng ngây người.
John tự nhủ, chẳng thể nào nàng lại là phù thuỷ. Chàng quyết vào cung cầu hôn, dù người bạn can ngăn và mọi người đều khóc thương chàng. Ông vua già hiền hậu ra đón, mặc áo choàng ngủ, nghe ý định của chàng thì rơi nước mắt. Vua dẫn chàng ra vườn: trên mỗi cây treo ba bốn chàng hoàng tử đã cầu hôn mà không đoán được. Gió thổi là xương kêu lách cách, chim chóc sợ không dám tới. Vua nói: “Con xem, rồi con cũng như họ thôi. Đừng thử nữa.” Nhưng vừa thấy công chúa, John lại quyết tâm. Ngày mai chàng sẽ đoán lần đầu.
Tối ấy, uống hai cốc rượu người bạn mời, John buồn ngủ díp mắt, ngủ say. Người bạn buộc đôi cánh thiên nga lên vai, giắt cây roi lớn nhất, bay tới cung điện. Nửa đêm, cửa sổ phòng công chúa mở, nàng khoác áo choàng trắng, dang đôi cánh đen lớn, bay qua thành phố về phía núi. Người bạn tàng hình bay theo, quất roi vào nàng tới chảy máu. Nàng kêu: “Mưa đá gì mà dữ thế!”
Núi mở ra như tiếng sấm. Bên trong là đại sảnh vàng bạc, nhện lấp lánh bò khắp tường, hoa lửa mọc trên thân rắn độc. Trên ngai bằng thuỷ tinh, đặt trên bốn bộ xương ngựa, có một lão phù thuỷ già xấu xí đội vương miện. Lão hôn trán công chúa, đặt nàng ngồi bên. Châu chấu đen thổi kèn, cú vọ vỗ bụng làm trống, triều thần thực ra chỉ là cán chổi cắm đầu bắp cải. Công chúa kể có người mới tới cầu hôn. Lão bảo: “Hãy nghĩ tới chiếc giày của con, hắn chẳng đời nào đoán ra. Rồi chặt đầu hắn, nhớ mang đôi mắt hắn về cho ta ăn.”
Sáng ra, người bạn kể mình nằm mơ thấy công chúa và chiếc giày. John nói: “Đoán vậy cũng được, biết đâu giấc mơ ứng nghiệm.” Hai người ôm nhau từ biệt. Giữa đại sảnh đầy người, công chúa hỏi chàng nghĩ nàng đang nghĩ gì. John nói: “Chiếc giày.” Nàng tái mét như ma. Ông vua già nhảy cẫng lên vì mừng. Đêm sau, người bạn mang hai cây roi, quất nàng mạnh hơn, và nghe được điều thứ hai: chiếc găng tay. Sáng ra anh lại kể như một giấc mơ, và John lại đoán đúng. Chỉ còn một lần. Đoán đúng, chàng cưới nàng. Đoán sai, chàng mất mạng, và lão phù thuỷ sẽ có đôi mắt xanh của chàng.
Đêm thứ ba bão to, ngói bay khỏi mái, cây trong vườn treo xương uốn rạp. Người bạn mang cả ba cây roi và thanh gươm, quất nàng tới mức nàng gần như không bay nổi. Trong núi, lão phù thuỷ nói sẽ nghĩ ra điều mà chàng trai không đời nào đoán được. Rồi lão tự bay tiễn nàng về, và người bạn bẻ gãy cả ba cây roi trên lưng hai kẻ. Tới cung, lão thì thầm vào tai nàng: “Ngày mai, hãy nghĩ tới cái đầu của ta.” Nàng vừa lọt vào cửa sổ, lão vừa quay đi, người bạn túm bộ râu đen dài, vung gươm chém phăng đầu lão. Thân lão ném xuống biển cho cá, còn cái đầu anh gói trong khăn lụa mang về.
Sáng ra, người bạn đưa John chiếc khăn, dặn khi nào công chúa hỏi mới được mở. Đại sảnh đông nghịt, công chúa mặc áo đen như đi đưa tang. Nàng hỏi: “Ta đang nghĩ gì?” John mở khăn, và chính chàng cũng hoảng khi thấy cái đầu xấu xí của lão phù thuỷ. Ai nấy rùng mình. Công chúa ngồi lặng như tượng đá. Rồi nàng đứng dậy đưa tay cho John: “Chàng là chủ của ta. Tối nay ta cưới nhau.” Cả thành phố mở hội, chuông nhà thờ vang, rượu chảy từ đài phun nước.
Nhưng công chúa vẫn là phù thuỷ, chưa thể yêu John. Người bạn đưa chàng ba chiếc lông từ đôi cánh thiên nga và một lọ nhỏ có vài giọt nước. Anh dặn đặt một bồn nước lớn cạnh giường, thả lông và nước vào, lúc nàng sắp lên giường thì đẩy nhẹ cho nàng ngã xuống, rồi nhấn nàng xuống nước ba lần. Lần thứ nhất, nàng thét lên, vùng vẫy trong tay chàng thành một con thiên nga đen mắt đỏ rực. Lần thứ hai, thiên nga hoá trắng, chỉ còn một vòng đen quanh cổ. Lần thứ ba, nàng hiện ra thành một nàng công chúa còn đẹp hơn trước, mắt long lanh nước, cảm ơn chàng đã phá tan bùa phép.
Hôm sau, sau cả triều đình, người bạn đồng hành tới, tay cầm gậy, vai đeo túi. John ôm hôn anh, xin anh ở lại, vì mọi may mắn của chàng đều nhờ anh. Người bạn lắc đầu, dịu dàng nói: “Không, hạn của tôi đã hết. Tôi chỉ trả món nợ với anh thôi. Anh còn nhớ người chết mà bọn ác muốn lôi ra khỏi quan tài không? Anh đã cho đi tất cả để ông ấy được yên nghỉ. Tôi chính là người đó.” Nói xong, anh biến mất. Tiệc cưới kéo dài cả tháng. John và công chúa yêu nhau tha thiết, ông vua già còn sống thêm nhiều năm vui, bế các cháu trên đầu gối. Và John trở thành vua cả nước.