diff --git a/src/core/RagePhoto.c b/src/core/RagePhoto.c
index 13906f4..0bab048 100644
--- a/src/core/RagePhoto.c
+++ b/src/core/RagePhoto.c
@@ -38,6 +38,10 @@
 #include <stringapiset.h>
 #endif
 
+/* RAGEPHOTO LIBRARY GLOBALS */
+int libraryflags = 0;
+const char* nullchar = "";
+
 /* BEGIN OF STATIC LIBRARY FUNCTIONS */
 inline size_t readBuffer(const char *input, void *output, size_t *pos, size_t outputLen, size_t inputLen)
 {
@@ -677,7 +681,9 @@ const char* ragephoto_getphotojpeg(ragephoto_t instance_t)
     RagePhotoInstance *instance = (RagePhotoInstance*)instance_t;
     if (instance->data->jpeg)
         return instance->data->jpeg;
-    return "";
+    if (libraryflags & RAGEPHOTO_FLAG_LEGACY_NULL_RETURN)
+        return NULL;
+    return nullchar;
 }
 
 uint64_t ragephotodata_getphotosignf(RagePhotoData *rp_data, uint32_t photoFormat)
@@ -731,7 +737,9 @@ const char* ragephoto_getphotodesc(ragephoto_t instance_t)
     RagePhotoInstance *instance = (RagePhotoInstance*)instance_t;
     if (instance->data->description)
         return instance->data->description;
-    return "";
+    if (libraryflags & RAGEPHOTO_FLAG_LEGACY_NULL_RETURN)
+        return NULL;
+    return nullchar;
 }
 
 const char* ragephoto_getphotojson(ragephoto_t instance_t)
@@ -739,7 +747,9 @@ const char* ragephoto_getphotojson(ragephoto_t instance_t)
     RagePhotoInstance *instance = (RagePhotoInstance*)instance_t;
     if (instance->data->json)
         return instance->data->json;
-    return "";
+    if (libraryflags & RAGEPHOTO_FLAG_LEGACY_NULL_RETURN)
+        return NULL;
+    return nullchar;
 }
 
 const char* ragephoto_getphotoheader(ragephoto_t instance_t)
@@ -747,7 +757,9 @@ const char* ragephoto_getphotoheader(ragephoto_t instance_t)
     RagePhotoInstance *instance = (RagePhotoInstance*)instance_t;
     if (instance->data->header)
         return instance->data->header;
-    return "";
+    if (libraryflags & RAGEPHOTO_FLAG_LEGACY_NULL_RETURN)
+        return NULL;
+    return nullchar;
 }
 
 const char* ragephoto_getphototitle(ragephoto_t instance_t)
@@ -755,7 +767,9 @@ const char* ragephoto_getphototitle(ragephoto_t instance_t)
     RagePhotoInstance *instance = (RagePhotoInstance*)instance_t;
     if (instance->data->title)
         return instance->data->title;
-    return "";
+    if (libraryflags & RAGEPHOTO_FLAG_LEGACY_NULL_RETURN)
+        return NULL;
+    return nullchar;
 }
 
 const char* ragephoto_version()
@@ -1097,6 +1111,14 @@ void ragephoto_setbufferoffsets(ragephoto_t instance_t)
     ragephotodata_setbufferoffsets(instance->data);
 }
 
+void ragephoto_setlibraryflag(RagePhotoLibraryFlag flag, bool state)
+{
+    if (state)
+        libraryflags |= flag;
+    else
+        libraryflags &= ~flag;
+}
+
 bool ragephoto_setphotodata(ragephoto_t instance_t, RagePhotoData *rp_data)
 {
     RagePhotoInstance *instance = (RagePhotoInstance*)instance_t;
diff --git a/src/core/RagePhoto.cpp b/src/core/RagePhoto.cpp
index be8731d..bc94be2 100644
--- a/src/core/RagePhoto.cpp
+++ b/src/core/RagePhoto.cpp
@@ -45,6 +45,10 @@
 /* CLASSIC RAGEPHOTO TYPEDEF */
 typedef ragephoto::photo RagePhoto;
 
+/* RAGEPHOTO LIBRARY GLOBALS */
+int libraryflags = 0;
+const char* nullchar = "";
+
 /* BEGIN OF STATIC LIBRARY FUNCTIONS */
 inline size_t readBuffer(const char *input, void *output, size_t *pos, size_t outputLen, size_t inputLen)
 {
@@ -639,7 +643,9 @@ const char* RagePhoto::jpegData() const
 {
     if (m_data->jpeg)
         return m_data->jpeg;
-    return "";
+    if (libraryflags & RAGEPHOTO_FLAG_LEGACY_NULL_RETURN)
+        return nullptr;
+    return nullchar;
 }
 
 uint64_t RagePhoto::jpegSign(uint32_t photoFormat, RagePhotoData *rp_data)
@@ -679,28 +685,36 @@ const char* RagePhoto::description() const
 {
     if (m_data->description)
         return m_data->description;
-    return "";
-}
-
-const char* RagePhoto::json() const
-{
-    if (m_data->json)
-        return m_data->json;
-    return "";
+    if (libraryflags & RAGEPHOTO_FLAG_LEGACY_NULL_RETURN)
+        return nullptr;
+    return nullchar;
 }
 
 const char* RagePhoto::header() const
 {
     if (m_data->header)
         return m_data->header;
-    return "";
+    if (libraryflags & RAGEPHOTO_FLAG_LEGACY_NULL_RETURN)
+        return nullptr;
+    return nullchar;
+}
+
+const char* RagePhoto::json() const
+{
+    if (m_data->json)
+        return m_data->json;
+    if (libraryflags & RAGEPHOTO_FLAG_LEGACY_NULL_RETURN)
+        return nullptr;
+    return nullchar;
 }
 
 const char* RagePhoto::title() const
 {
     if (m_data->title)
         return m_data->title;
-    return "";
+    if (libraryflags & RAGEPHOTO_FLAG_LEGACY_NULL_RETURN)
+        return nullptr;
+    return nullchar;
 }
 
 const char* RagePhoto::version()
@@ -1151,6 +1165,17 @@ void RagePhoto::setFormat(uint32_t photoFormat)
     m_data->photoFormat = photoFormat;
 }
 
+void RagePhoto::setHeader(const char *header, uint32_t headerSum, uint32_t headerSum2)
+{
+    if (!writeDataChar(header, &m_data->header)) {
+        m_data->error = Error::HeaderMallocError; // 4
+        return;
+    }
+    m_data->headerSum = headerSum;
+    m_data->headerSum2 = headerSum2;
+    m_data->error = Error::NoError; // 255
+}
+
 bool RagePhoto::setJpeg(const char *data, uint32_t size, uint32_t bufferSize)
 {
     if (m_data->jpeg) {
@@ -1215,15 +1240,12 @@ void RagePhoto::setJson(const char *json, uint32_t bufferSize)
     m_data->error = Error::NoError; // 255
 }
 
-void RagePhoto::setHeader(const char *header, uint32_t headerSum, uint32_t headerSum2)
+void RagePhoto::setLibraryFlag(RagePhotoLibraryFlag flag, bool state)
 {
-    if (!writeDataChar(header, &m_data->header)) {
-        m_data->error = Error::HeaderMallocError; // 4
-        return;
-    }
-    m_data->headerSum = headerSum;
-    m_data->headerSum2 = headerSum2;
-    m_data->error = Error::NoError; // 255
+    if (state)
+        libraryflags |= flag;
+    else
+        libraryflags &= ~flag;
 }
 
 void RagePhoto::setTitle(const char *title, uint32_t bufferSize)
@@ -1476,6 +1498,11 @@ void ragephotodata_setbufferoffsets(RagePhotoData *rp_data)
     RagePhoto::setBufferOffsets(rp_data);
 }
 
+void ragephoto_setlibraryflag(RagePhotoLibraryFlag flag, bool state)
+{
+    RagePhoto::setLibraryFlag(flag, state);
+}
+
 bool ragephoto_setphotodata(ragephoto_t instance, RagePhotoData *rp_data)
 {
     RagePhoto *ragePhoto = static_cast<RagePhoto*>(instance);
diff --git a/src/core/RagePhoto.h b/src/core/RagePhoto.h
index 7f67297..03025b6 100644
--- a/src/core/RagePhoto.h
+++ b/src/core/RagePhoto.h
@@ -301,6 +301,13 @@ LIBRAGEPHOTO_C_PUBLIC void ragephoto_setbufferoffsets(ragephoto_t instance);
 */
 LIBRAGEPHOTO_C_PUBLIC void ragephotodata_setbufferoffsets(RagePhotoData *rp_data);
 
+/** Sets a library flag.
+* \relates RagePhotoInstance
+* \param flag Library flag
+* \param state Flag state
+*/
+LIBRAGEPHOTO_C_PUBLIC void ragephoto_setlibraryflag(RagePhotoLibraryFlag flag, bool state);
+
 /** Sets the internal RagePhotoData object.
 * \memberof RagePhotoInstance
 * \param instance \p ragephoto_t instance
diff --git a/src/core/RagePhotoTypedefs.h b/src/core/RagePhotoTypedefs.h
index 23172ad..5a3cabb 100644
--- a/src/core/RagePhotoTypedefs.h
+++ b/src/core/RagePhotoTypedefs.h
@@ -78,6 +78,11 @@ typedef struct RagePhotoInstance {
     RagePhotoFormatParser *parser; /**< Pointer for internal format parser */
 } RagePhotoInstance;
 
+/** RagePhoto library flags. */
+typedef enum RagePhotoLibraryFlag {
+    RAGEPHOTO_FLAG_LEGACY_NULL_RETURN = 1 << 0 /**< Flag to enable legacy NULL return */
+} RagePhotoLibraryFlag;
+
 /* RagePhoto default sizes */
 #define RAGEPHOTO_DEFAULT_GTA5_PHOTOBUFFER UINT32_C(524288) /**< GTA V default Photo Buffer Size */
 #define RAGEPHOTO_DEFAULT_RDR2_PHOTOBUFFER UINT32_C(1048576) /**< RDR 2 default Photo Buffer Size */
diff --git a/src/core/ragephoto_c.hpp b/src/core/ragephoto_c.hpp
index 82b8be2..b836cb8 100644
--- a/src/core/ragephoto_c.hpp
+++ b/src/core/ragephoto_c.hpp
@@ -198,14 +198,14 @@ public:
     const char* description() const {
         return ragephoto_getphotodesc(instance);
     }
-    /** Returns the Photo JSON data. */
-    const char* json() const {
-        return ragephoto_getphotojson(instance);
-    }
     /** Returns the Photo header. */
     const char* header() const {
         return ragephoto_getphotoheader(instance);
     }
+    /** Returns the Photo JSON data. */
+    const char* json() const {
+        return ragephoto_getphotojson(instance);
+    }
     /** Returns the Photo title. */
     const char* title() const {
         return ragephoto_getphototitle(instance);
@@ -314,6 +314,10 @@ public:
     void setFormat(uint32_t photoFormat) {
         ragephoto_setphotoformat(instance, photoFormat);
     }
+    /** Sets the Photo header. */
+    void setHeader(const char *header, uint32_t headerSum, uint32_t headerSum2 = 0) {
+        ragephoto_setphotoheader2(instance, header, headerSum, headerSum2);
+    }
     /** Sets the Photo JPEG data.
     * \param data JPEG data
     * \param size JPEG data size
@@ -333,9 +337,9 @@ public:
     void setJson(const char *json, uint32_t bufferSize = 0) {
         ragephoto_setphotojson(instance, json, bufferSize);
     }
-    /** Sets the Photo header. */
-    void setHeader(const char *header, uint32_t headerSum, uint32_t headerSum2 = 0) {
-        ragephoto_setphotoheader2(instance, header, headerSum, headerSum2);
+    /** Sets a library flag. */
+    static void setLibraryFlag(RagePhotoLibraryFlag flag, bool state = true) {
+        ragephoto_setlibraryflag(flag, state);
     }
     /** Sets the Photo title. */
     void setTitle(const char *title, uint32_t bufferSize = 0) {
diff --git a/src/core/ragephoto_cxx.hpp b/src/core/ragephoto_cxx.hpp
index 9cb7176..d5f05d4 100644
--- a/src/core/ragephoto_cxx.hpp
+++ b/src/core/ragephoto_cxx.hpp
@@ -133,8 +133,8 @@ public:
     uint64_t jpegSign() const; /**< Returns the Photo JPEG sign. */
     uint32_t jpegSize() const; /**< Returns the Photo JPEG data size. */
     const char* description() const; /**< Returns the Photo description. */
-    const char* json() const; /**< Returns the Photo JSON data. */
     const char* header() const; /**< Returns the Photo header. */
+    const char* json() const; /**< Returns the Photo JSON data. */
     const char* title() const; /**< Returns the Photo title. */
     static const char* version(); /**< Returns the library version. */
     static bool save(char *data, uint32_t photoFormat, RagePhotoData *rp_data, RagePhotoFormatParser *rp_parser); /**< Saves a Photo to a char*. */
@@ -170,6 +170,7 @@ public:
     bool setData(RagePhotoData *rp_data, bool takeCopy = true); /**< Sets the internal RagePhotoData object. */
     void setDescription(const char *description, uint32_t bufferSize = 0); /**< Sets the Photo description. */
     void setFormat(uint32_t photoFormat); /**< Sets the Photo Format (GTA V or RDR 2). */
+    void setHeader(const char *header, uint32_t headerSum, uint32_t headerSum2 = 0); /**< Sets the Photo header. */
     /** Sets the Photo JPEG data.
     * \param data JPEG data
     * \param size JPEG data size
@@ -182,7 +183,7 @@ public:
     */
     bool setJpeg(const std::string &data, uint32_t bufferSize = 0);
     void setJson(const char *json, uint32_t bufferSize = 0); /**< Sets the Photo JSON data. */
-    void setHeader(const char *header, uint32_t headerSum, uint32_t headerSum2 = 0); /**< Sets the Photo header. */
+    static void setLibraryFlag(RagePhotoLibraryFlag flag, bool state = true); /**< Sets a library flag. */
     void setTitle(const char *title, uint32_t bufferSize = 0); /**< Sets the Photo title. */
 
 private: