Вихідний код (також вихідний текст) — текст комп'ютерної програми на якій-небудь мові програмування або мовою розмітки, який може бути прочитаний людиною. В узагальненому сенсі — будь-які вхідні дані для транслятора. Вихідний код транслюється в виконуваний код цілком до запуску програми за допомогою компілятора, або може виконуватися відразу за допомогою інтерпретатора.
Вихідний код або використовується для отримання об'єктного коду або виконується інтерпретатором. Зміни ніколи не виконуються над об'єктним кодом, тільки над вихідним, з подальшим повторним перетворенням в об'єктний.
Інше важливе призначення коду в якості опису програми. З текстом програми можна відновити логіку її поведінки. Для полегшення розуміння вихідного коду використовуються коментарі. Існують також інструментальні засоби, що дозволяють автоматично отримувати документацію з вихідного коду — т. зв. генератори документації.
Крім того, вихідний код має багато інших застосувань. Він може використовуватися як інструмент навчання; починаючим програмістам буває корисно дослідити існуючий вихідний код для вивчення техніки та методології програмування. Він також використовується як інструмент спілкування між досвідченими програмістами, завдяки своїй лаконічній і недвозначною природі. Спільне використання коду розробниками часто згадується як фактор, що сприяє поліпшенню досвіду програмістів.
Програмісти часто переносять вихідний код (у вигляді модулів, у наявному вигляді або з адаптацією) з одного проекту в інший, що носить назву повторного використання коду.
Вихідний код — найважливіший компонент для процесу портування програмного забезпечення на інші платформи. Без вихідного коду якій-небудь частині ЗА портування або дуже складно, або взагалі неможливо.
Вихідний код деякої частини (модулі, компоненти) може складатися з одного або декількох файлів. Код програми не обов'язково пишеться тільки на одній мові програмування. Наприклад, часто програми, написані на мові Сі, з міркувань оптимізації містять вставки коду на мові асемблера. Також можливі ситуації, коли деякі компоненти або частини програми пишуться на різних мовах, з подальшою збіркою в єдиний виконуваний модуль за допомогою технології, відомої як компонування бібліотек (library linking).
Складне програмне забезпечення при складанні вимагає використання десятків або навіть сотень файлів з вихідним кодом. У таких випадках для спрощення складання зазвичай використовуються файли проектів, що містять опис залежностей між файлами з вихідним кодом і описують процес складання. Ці файли можуть містити параметри компілятора і середовища проектування. Для різних середовищ проектування можуть застосовуватися різні файли проекту, причому в деяких середовищах ці файли можуть бути в текстовому форматі, придатному для безпосереднього редагування програмістом за допомогою універсальних текстових редакторів, в інших середовищах підтримуються спеціальні формати, а створення і зміни файлів здійснюється за допомогою спеціальних інструментальних програм. Файли проектів зазвичай включають в поняття «вихідний код». Часто під кодом розуміють і файли ресурсів, що містять різні дані, наприклад, графічні зображення, необхідні для складання програми.
Для полегшення роботи з початковим кодом і для спільної роботи над кодом командою програмістів використовуються системи керування версіями.
На відміну від людини, для комп'ютера немає «добре написаного», або «погано написаного» коду. Але те, як написаний код, може сильно впливати на процес супроводу. Про якість вихідного коду можна судити по наступним параметрам: читаність коду (у тому числі наявність коментарів до коду); легкість підтримки, тестування, налагодження та усунення помилок, модифікації і портуванні; економне використання ресурсів пам'яті, процесора, дискового простору; відсутність зауважень, виведених компілятором; відсутність «сміття» — невикористовуваних змінних, недосяжних блоків коду, непотрібних застарілих коментарів і т. д.; адекватна обробка помилок; переносимість — можливість використання обробника (компілятора, інтерпретатора, транслятора) різних версій або навіть різних ОС; можливість інтернаціоналізації інтерфейсу.
Копилефтные ліцензії для вільного вимагають поширення вихідного коду. Ці ліцензії часто використовуються також для робіт, які не є програмами — наприклад, документації, зображень, файлів даних для комп'ютерних ігор.
У таких випадках вихідним кодом вважається форма даної роботи, бажана для її редагування. У ліцензіях, призначених не тільки для ПО, вона також може називатись версією в «прозорому форматі». Це може бути, наприклад: для файлу, стиснутого з втратою даних — версія без втрат; для фонового векторного зображення або тривимірної моделі — відповідно, векторна версія та модель; для зображення тексту — такий же текст у текстовому форматі; для музики — файл у внутрішньому форматі музичного редактора; і нарешті, сам файл, якщо він задовольняє зазначеним умовам, або якщо більш зручною версії просто не існувало.