WeChatChatLogArchiver
Utility for comprehensive extraction and enduring storage of WeChat desktop client conversations, ensuring message access—including multimedia and documents—regardless of future official application support lifecycle.
Author

git-jiadong
Quick Info
Actions
Tags
WeChatChatLogArchiver
- Developed leveraging Wails framework paired with a React frontend to facilitate one-click extraction of PC WeChat interaction history.
- Enables perpetual archiving of exported data, ensuring chat transcripts remain accessible even if WeChat ceases support. Viewing historical exchanges is always possible.
- The user interface is meticulously designed to mirror the native WeChat aesthetic, minimizing the learning curve for operation.
- Theoretically compatible with all 32-bit and 64-bit iterations of the Windows WeChat client.
Visual demonstration below:
Showcase Video
Operational Instructions
- Obtain the executable binary directly from the releases page. Domestic users may utilize Alternate Download Mirror.
- For source compilation: First, establish the Wails environment.
shell git clone https://github.com/git-jiadong/wechatDataBackup.git cd wechatDataBackup wails build
The compiled executable will reside at: build\bin\wechatDataBackup.exe
Compilation failures often stem from missing GCC environments; consider installing tdm-gcc if issues persist.
- Execute the archival process:
Launch
wechatDataBackup.exeafter logging into WeChat on your PC, and follow the on-screen prompts for data extraction.
Incorporated Capabilities
Projected and realized features roadmap: - [x] Support for image message retrieval - [x] Support for video message retrieval - [x] Support for hyperlink message handling - [x] Support for voice message handling - [x] Support for file attachment retrieval - [x] Support for contact card message parsing - [x] Support for location sharing messages - [x] Support for video/voice call metadata - [x] Support for QQ Music embedded messages - [x] Support for third-party video service shares - [x] Support for shared sticker/emoji collection messages - [x] Support for mini-program message handling - [x] Support for Video Channel/Livestream messages - [x] Support for monetary transfer messages - [x] Support for Tencent Game share messages - [x] Preservation of original emoji appearance - [x] Filtering capabilities based on message type - [x] Filtering capabilities based on date range - [x] Filtering capabilities based on group participant - [x] Support for incremental data extraction - [x] Selection and export for multiple logged-in accounts - [x] Switching between data sets for multiple accounts - [x] Utilization of locally cached user avatars - [ ] Enhanced display support for additional message formats - [x] Redrawing/refining the image viewer component - [x] Session-level data sharing export capability - [x] Automatic resumption to the last viewed position - [x] Implementation of session bookmarking - [x] Feature to swap interlocutor positions in single-chat sessions - [ ] Pre-fetching and local storage of emojis (for complete offline viewing) - [ ] Generation of conversation summaries/reports - [ ] Integration of local AI models for analysis - [ ] Implementing local encryption for exported datasets - ... Should you encounter difficulties or possess suggestions for enhancements, please submit an ISSUE to the developer.
Frequently Addressed Queries
Q: Does this support backing up mobile phone chat histories?
A: Mobile data can first be transferred to the PC client using the official chat data migration feature, followed by exporting that data using this tool. Reference: WeChat Migration Guide
Q: The exported interface shows blank content, or the exported data volume is smaller than what is visible in the PC client (incomplete data).
A: This often indicates that some data remains in volatile memory (RAM) and has not been flushed to disk. It is best practice to fully exit and then re-login to WeChat before initiating the data extraction to ensure all data resides on the persistent storage.
Q: Some images or videos fail to load upon viewing.
A: This occurs if the specific message was never opened on the PC client, causing WeChat to only cache the preview thumbnail. If the message was viewed on the mobile device, migrate that data to the PC, log out/in on the PC client, and then export again.
Q: The application fails to run on Windows 7 systems.
A: Win7 installations require the presence of the WebView2 runtime component. The standard GitHub release is restricted to newer Windows versions; Win7 specific builds are available here.
Star Trajectory
Disclaimer
⚠️ This software is strictly intended for educational study and research purposes; commercial utilization is strictly prohibited.
⚠️ If employed for network security testing, users must ensure full compliance with applicable national laws and regulations.
⚠️ This project is entirely free; any entity demanding payment for this tool is fraudulent.
⚠️ The developer's intent was personal exploration of WeChat database mechanisms. The author assumes zero liability for any resulting consequences, including but not limited to data corruption or loss, incurred through the use of this utility.
⚠️ Given the sensitive nature of the data handled, explicit authorization from the WeChat account owner is mandatory before use. Users bear sole responsibility for any privacy infringements resulting from its deployment.
Frontend Source Code
Due to the current developmental immaturity of the frontend module, the associated interface code is temporarily withheld from public release.
References and Citations
- WeChat database decryption and usage analysis: PyWxDump
- silk audio message decoding library: silk-v3-decoder
- PCM to MP3 conversion utility: lame
- Dat file image decoding utility: wechatDatDecode
Support and Discussion Channel
WIKIPEDIA: XMLHttpRequest (XHR) is an API in the form of a JavaScript object whose methods transmit HTTP requests from a web browser to a web server. The methods allow a browser-based application to send requests to the server after page loading is complete, and receive information back. XMLHttpRequest is a component of Ajax programming. Prior to Ajax, hyperlinks and form submissions were the primary mechanisms for interacting with the server, often replacing the current page with another one.
== History == The concept behind XMLHttpRequest was conceived in 2000 by the developers of Microsoft Outlook. The concept was then implemented within the Internet Explorer 5 browser (1999). However, the original syntax did not use the XMLHttpRequest identifier. Instead, the developers used the identifiers ActiveXObject("Msxml2.XMLHTTP") and ActiveXObject("Microsoft.XMLHTTP"). As of Internet Explorer 7 (2006), all browsers support the XMLHttpRequest identifier. The XMLHttpRequest identifier is now the de facto standard in all the major browsers, including Mozilla's Gecko layout engine (2002), Safari 1.2 (2004) and Opera 8.0 (2005).
=== Standards === The World Wide Web Consortium (W3C) published a Working Draft specification for the XMLHttpRequest object on April 5, 2006. On February 25, 2008, the W3C published the Working Draft Level 2 specification. Level 2 added methods to monitor event progress, allow cross-site requests, and handle byte streams. At the end of 2011, the Level 2 specification was absorbed into the original specification. At the end of 2012, the WHATWG took over development and maintains a living document using Web IDL.
== Usage == Generally, sending a request with XMLHttpRequest has several programming steps.
Create an XMLHttpRequest object by calling a constructor: Call the "open" method to specify the request type, identify the relevant resource, and select synchronous or asynchronous operation: For an asynchronous request, set a listener that will be notified when the request's state changes: Initiate the request by calling the "send" method: Respond to state changes in the event listener. If the server sends response data, by default it is captured in the "responseText" property. When the object stops processing the response, it changes to state 4, the "done" state. Aside from these general steps, XMLHttpRequest has many options to control how the request is sent and how the response is processed. Custom header fields can be added to the request to indicate how the server should fulfill it, and data can be uploaded to the server by providing it in the "send" call. The response can be parsed from the JSON format into a readily usable JavaScript object, or processed gradually as it arrives rather than waiting for the entire text. The request can be aborted prematurely or set to fail if not completed in a specified amount of time.
== Cross-domain requests ==
In the early development of the World Wide Web, it was found possible to brea
